MySQL分组查询统计的实用指南
在MySQL中,分组查询主要通过GROUP BY子句结合聚合函数来实现数据统计,它能将数据按指定列分组,并对每组进行计算,如计数、求和、平均值等,这是数据分析中处理汇总信息的关键技术。

基本分组统计语法
使用GROUP BY时,常搭配以下聚合函数:
- COUNT():统计每组行数,例如统计每个部门的员工数量。
- SUM():计算每组数值列的总和,如计算每个类别的销售总额。
- AVG():求每组数值列的平均值,例如计算各区域平均薪资。
- MAX()/MIN():获取每组的最大值或最小值。
基本示例:
SELECT department, COUNT(*) AS employee_count, AVG(salary) AS avg_salary FROM employees GROUP BY department;
此查询会按部门分组,并统计每个部门的员工数量和平均工资。
分组后筛选:HAVING子句
HAVING子句用于对分组后的结果进行筛选,与WHERE不同,WHERE在分组前过滤行,而HAVING在分组后过滤组,只显示员工数超过5人的部门:
SELECT department, COUNT(*) AS employee_count FROM employees GROUP BY department HAVING employee_count > 5;
多列分组与排序
可以按多列分组,实现更精细的统计,结合ORDER BY可对结果排序:
SELECT department, job_role, SUM(sales) AS total_sales FROM sales_data GROUP BY department, job_role ORDER BY total_sales DESC;
此查询按部门和职位分组统计销售总额,并按销售额降序排列。
分组查询的注意事项
- SELECT中的非聚合列:在GROUP BY查询中,SELECT列表应只包含分组列或聚合函数,否则可能引发错误或不可预测结果。
- 性能优化:对分组列建立索引可提升查询效率,尤其在处理大数据时。
- 与DISTINCT区别:GROUP BY用于统计计算,而DISTINCT仅去重,两者目的不同。
实际应用场景
分组统计广泛应用于业务分析,
- 电商:按商品类别统计订单量和总收入。
- 教育:按班级计算学生平均成绩。
- 日志分析:按日期分组统计网站访问量。
掌握MySQL分组查询能高效完成数据汇总任务,结合聚合函数和HAVING子句,可灵活应对复杂统计需求,实践中,建议先明确分析目标,再设计分组逻辑,并注意数据索引以保障查询性能。
未经允许不得转载! 作者:HTML前端知识网,转载或复制请以超链接形式并注明出处HTML前端知识网。
原文地址:https://www.html4.cn/16018.html发布于:2026-09-10





