【MySQL】MySQL的分组查询怎么使用?

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;