MySQL的分组查询主要用于统计多个列中相同值的数据。语法为:
SELECT column1, column2, ... , column_n, aggregate_function(column)
FROM table_name
WHERE [condition]
GROUP BY column1, column2, ... column_n;
它通过GROUP BY子句对查询结果进行分组,然后对每个组使用aggregate functions计算聚合值。
主要可以使用以下聚合函数:
- COUNT(): 统计每个组的行数
- SUM(): 计算每个组中某列的值的总和。
- AVG(): 计算每个组中某列值的平均值。
- MAX(): 返回每个组中某列的最大值。
- MIN():返回每个组中某列的最小值。
语法项解释:
- column1, column2, … column_n :根据这些列进行分组
- aggregate_function(column): 对 column 应用于一个聚集函数
- HAVING 子句:过滤分组后的结果。WHERE子句在分组之前过滤。
语例:
查询每个部门的平均工资:
SELECT department, AVG(salary)
FROM employees
GROUP BY department;
查询每个生日月份的员工个数:
SELECT MONTH(birthday) AS birth_month, COUNT(*)
FROM employees
GROUP BY birth_month;