当前位置: 首页 > article >正文

【后端面试总结】mysql的group by怎么用

GROUP BY 是 SQL 中的一种用于对结果集进行分组的子句,常与聚合函数(如 COUNT()SUM()AVG()MAX()MIN() 等)一起使用。GROUP BY 的作用是基于一个或多个列对查询结果进行分组,然后可以对每个分组执行聚合操作。

以下是 GROUP BY 的一些关键点和用法示例:

基本用法

假设有一个名为 employees 的表,表结构如下:

idnamedepartmentsalary
1AliceHR5000
2BobIT6000
3CarolHR5500
4DavidIT6200
5EveSales5800
示例 1: 按部门统计员工人数
SELECT department, COUNT(*) AS number_of_employees
FROM employees
GROUP BY department;

这条查询会返回每个部门的员工人数。

示例 2: 按部门计算平均薪资
SELECT department, AVG(salary) AS average_salary
FROM employees
GROUP BY department;

这条查询会返回每个部门的平均薪资。

使用多个列分组

你也可以按多个列进行分组。例如,如果你想按部门和薪资等级对员工进行分组,可以这样做:

SELECT department, salary, COUNT(*) AS number_of_employees
FROM employees
GROUP BY department, salary;

注意事项

  1. SELECT 列表中的所有列: 在 SELECT 语句中,GROUP BY 的影响是所有未参与聚合的列都应出现在 GROUP BY 子句中。

  2. NULL 处理: 当分组键中存在 NULL 值时,SQL 会将 NULL 值单独作为一个分组。

  3. HAVING 子句: 可以在 GROUP BY 的结果上使用 HAVING 子句进行过滤。HAVING 子句的作用类似于 WHERE 子句,但 WHERE 是在分组之前过滤记录,而 HAVING 是在分组之后过滤结果。

    示例:

    SELECT department, AVG(salary) AS average_salary
    FROM employees
    GROUP BY department
    HAVING AVG(salary) > 5500;
    

    这条查询返回平均薪资大于 5500 的部门。

  4. 顺序: GROUP BY 子句通常出现在 WHERE 子句之后,ORDER BY 子句之前。

通过使用 GROUP BY,你可以对数据进行强大的分组和聚合,帮助你从复杂的数据集中提取有价值的信息。


http://www.kler.cn/a/520901.html

相关文章:

  • 2024年度总结——理想的风,吹进现实
  • 预测性维护系统:让设备“未卜先知”
  • leetcode_链表 234.回文链表
  • 从入门到精通:RabbitMQ的深度探索与实战应用
  • dmfldr实战
  • ubuntu22安装issac gym记录
  • 二叉树的所有路径(力扣257)
  • PDF2WORD万能方法,如何控制Adobe dc pro,自动实现PDF转word
  • 如何保证P2P能源交易的安全性
  • 《RWA全球产业白皮书》发布:向凌云教授解析全球经济转型与RWA的未来
  • 操作系统(Linux Kernel 0.11Linux Kernel 0.12)解读整理——内核初始化(main init)之控制台工作
  • 【C++图论】2685. 统计完全连通分量的数量|1769
  • 数据结构——堆(C语言)
  • Shodan Dorks安装指南,通过Shodan搜索漏洞
  • FLTK - FLTK1.4.1 - demo - adjuster.exe
  • Vue-day2
  • 人形机器人,自动驾驶“老炮”创业第二站
  • k8s简介,k8s环境搭建
  • 《Java程序设计》课程考核试卷
  • 【mybatis】 插件 idea-mybatis-generator
  • 强化学习数学原理(二)——贝尔曼公式
  • Excel 技巧21 - Excel中整理美化数据实例,Ctrl+T 超级表格(★★★)
  • Redis 的热 Key(Hot Key)问题及解决方法
  • QT实现有限元软件操作界面
  • 本地大模型编程实战(03)语义检索(2)
  • 【Linux课程学习】:锁封装(Mutex)线程封装(Thread),this指针