学MySQL的group by这一篇就够了·

目录

1. 基本语法

2. 单列分组

3. 多列分组

4. 使用表达式进行分组

5. 使用聚合函数

6. 过滤分组结果

7. 对分组结果进行排序

8. 使用GROUP BY的HAVING子句

9. 嵌套查询与GROUP BY

10. 注意事项


注意!注意!注意!    

group by和聚合通常是组合一起用的,在MySQL中使用group by时,select语句所用到的字段,要么进行group by分组,要么就是对字段进行聚合,除非该字段是常量,否则select中出现其他没有被分组或者聚合的字段,就会报错,这是语法、语法、语法!!!

当使用MySQL进行数据分析时,GROUP BY子句是一个非常重要的工具,它允许您根据一个或多个列对数据进行分组,并对每个组应用聚合函数(如COUNTSUMAVG等)。下面是一个超级详细的MySQL GROUP BY的使用教程:

1. 基本语法

SELECT 列1, 列2, 聚合函数(列3) FROM 表名 GROUP BY 列1, 列2;
  • SELECT:选择要检索的列或表达式。
  • 聚合函数:如COUNTSUMAVG等。
  • FROM:指定要查询的表。
  • GROUP BY:指定要分组的列。

2. 单列分组

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

这将统计每个部门的员工数量。

3. 多列分组

SELECT department, gender, COUNT(*) AS employee_count FROM employees GROUP BY department, gender;

这将统计每个部门中不同性别的员工数量。

4. 使用表达式进行分组

SELECT YEAR(hire_date) AS hire_year, COUNT(*) AS employee_count FROM employees GROUP BY YEAR(hire_date);

这将按照员工入职年份对员工进行分组统计。

5. 使用聚合函数

SELECT department, AVG(salary) AS avg_salary FROM employees GROUP BY department;

这将计算每个部门的平均工资。

6. 过滤分组结果

SELECT department, COUNT(*) AS employee_count FROM employees WHERE salary > 50000 GROUP BY department;

这将统计工资高于50000的员工数量,按部门分组。

7. 对分组结果进行排序

SELECT department, COUNT(*) AS employee_count FROM employees GROUP BY department ORDER BY employee_count DESC;

这将按照员工数量降序排列部门。

8. 使用GROUP BY的HAVING子句

SELECT department, AVG(salary) AS avg_salary FROM employees GROUP BY department HAVING avg_salary > 60000;

这将计算每个部门的平均工资,并且只返回平均工资大于60000的部门。

9. 嵌套查询与GROUP BY

SELECT department, MAX(salary) AS max_salary FROM employees WHERE salary > (SELECT AVG(salary) FROM employees) GROUP BY department;

这将计算每个部门中工资高于公司平均工资的员工的最高工资。

10. 注意事项

  • GROUP BY子句中的列必须在SELECT语句中出现,或者是聚合函数的参数。
  • 如果在SELECT中使用了聚合函数,则GROUP BY中的所有列都必须是聚合函数的参数,或者出现在SELECT中。
  • GROUP BY子句按照指定的顺序对结果进行分组。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值