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

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

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

基本用法

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

id name department salary
1 Alice HR 5000
2 Bob IT 6000
3 Carol HR 5500
4 David IT 6200
5 Eve Sales 5800
示例 1: 按部门统计员工人数
sql 复制代码
SELECT department, COUNT(*) AS number_of_employees
FROM employees
GROUP BY department;

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

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

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

使用多个列分组

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

sql 复制代码
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 是在分组之后过滤结果。

    示例:

    sql 复制代码
    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,你可以对数据进行强大的分组和聚合,帮助你从复杂的数据集中提取有价值的信息。

相关推荐
浅念-6 小时前
递归解题指南:LeetCode经典题全解析
数据结构·算法·leetcode·职场和发展·排序算法·深度优先·递归
Mahir087 小时前
Redis 与 MySQL 数据同步:一致性保证的完整解决方案
数据库·redis·mysql·缓存·面试·数据一致性
·醉挽清风·7 小时前
学习笔记—MySQL—库表操作
笔记·学习·mysql
洛水水7 小时前
【力扣100题】33.验证二叉搜索树
算法·leetcode·职场和发展
刀法如飞9 小时前
Go 字符串查找的 20 种实现方式,用不同思路解决问题
算法·面试·程序员
数据库小学妹9 小时前
数据库连接池避坑指南:告别“连接超时”与“资源耗尽”,让系统跑得更快!
数据库·redis·sql·mysql·缓存·dba
前进的李工9 小时前
EXPLAIN输出格式全解析:JSON、TREE与可视化
开发语言·数据库·mysql·性能优化·explain
达梦产品与服务9 小时前
稳扎稳打,持续迭代 | SQLark V3.10 更新,30+ 项优化与修复
mysql·oracle·达梦数据库·pg·sqlark百灵连接
shizhan_cloud12 小时前
MySQL 索引优化 + 慢查询日志
数据库·mysql
Drache_long12 小时前
MySQL数据库(故障排除)
数据库·mysql