MySQL数据库分组查询是一种非常重要的查询手段,它可以根据指定的一个或多个列的值对结果进行分组,通常与聚合函数一起使用。
1. GROUP BY语句的基本用法
GROUP BY语句用于对结果集根据指定的字段进行分组。基本语法如下:
SELECT column1, column2, ... FROM table_name GROUP BY column1, column2, ...;
实例如下,统计每个部门的员工数量和最高薪资:
SELECT department_id, COUNT(employee_id), MAX(salary) FROM employees GROUP BY department_id;
结果集会按照部门id进行分组,统计每组的员工数量和最高薪资。需要注意的是,如果查询中没有使用聚合函数,那么分组的结果只会包含分组字段和查询字段。
2. GROUP BY语句与聚合函数
GROUP BY语句通常和聚合函数一起使用,以实现更加复杂的统计功能。常用的聚合函数包括:
- COUNT():计算行数,可以传入一个字段或者一个*表示统计所有行
- SUM():对数值进行求和
- AVG():求平均值
- MAX():求最大值
- MIN():求最小值
示例:统计每个部门里工资最高的员工的信息
SELECT department_id, MAX(salary), employee_id, first_name, last_name
FROM employees
GROUP BY department_id;
需要注意的是,如果SELECT语句里的列既有聚合函数也有非聚合函数,那么非聚合函数的列必须在GROUP BY语句中出现。
3. 使用HAVING过滤分组结果
HAVING语句可以在GROUP BY语句的基础上再进行一次筛选,只显示符合条件的分组结果。语法格式如下:
SELECT column1, column2, ... FROM table_name GROUP BY column1, column2, ... HAVING condition;
实例:统计平均工资超过10000的部门信息
SELECT department_id, AVG(salary) FROM employees GROUP BY department_id HAVING AVG(salary) > 10000;
通过这个查询语句,可以筛选出平均工资超过10000的部门。
以上就是关于MySQL数据库分组查询GROUP BY语句详解的完整攻略。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:MySQL数据库分组查询group by语句详解 - Python技术站