【后端面试总结】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,你可以对数据进行强大的分组和聚合,帮助你从复杂的数据集中提取有价值的信息。

相关推荐
可涵不会debug1 小时前
MySQL数据库基础
数据库·mysql
阳区欠2 小时前
【MySQL-7】事务
数据库·mysql·事务·隔离级别·mvcc·隔离性·rr
Long_poem2 小时前
【自学笔记】MySQL的重点知识点-持续更新
数据库·笔记·mysql
兑生5 小时前
力扣面试150 快乐数 循环链表找环 链表抽象 哈希
leetcode·链表·面试
扎量丙不要犟12 小时前
rust操作pgsql、mysql和sqlite
数据库·mysql·rust·sqlite·sqlx
不能只会打代码12 小时前
蓝桥杯例题三
职场和发展·蓝桥杯
Good Note14 小时前
Golang笔记——常用库context和runtime
开发语言·redis·笔记·后端·面试·golang·春招
努力的小T14 小时前
Linux MySQL离线安装
linux·运维·服务器·数据库·mysql·adb·云计算
恩爸编程16 小时前
MySQL中的读锁与写锁:概念与作用深度剖析
数据库·mysql·mysql锁机制·mysql读锁·mysql写锁·mysql中的读锁啥意思·mysql中的写锁啥意思