如何使用MySQL中的分组和聚合函数?

MySQL中的分组和聚合函数可以用于统计和汇总数据。

  1. 分组使用GROUP BY语句:
sql
SELECT col1, col2 
FROM table1
GROUP BY col1;

这会将table1表中的行分成多组,每组具有相同的col1值。

  1. 聚合函数用于统计分组后的值,常用的有:
  • COUNT():计数
  • MAX():最大值
  • MIN():最小值
  • SUM():求和
  • AVG():平均值
sql
SELECT col1, COUNT(*) AS num 
FROM table1
GROUP BY col1;

这会统计每个col1分组后的行数。

  1. WHERE过滤分组前的数据,HAVING过滤分组后的数据:
sql
SELECT col1, COUNT(*) AS num
FROM table1
WHERE col2 > 0  # 分组前过滤
GROUP BY col1
HAVING num > 2; # 分组后过滤
  1. 可以对多个字段进行分组,分组顺序跟在GROUP BY子句中字段的顺序一致:
sql
SELECT col1, col2, COUNT(*) AS num
FROM table1
GROUP BY col1, col2;

首先按col1分组,然后每个col1分组内再按col2分组。

  1. 与DISTINCT类似,GROUP BY可以去除重复行:
sql 
SELECT col1 
FROM table1
GROUP BY col1;

这种用法实际上是分组后只选取一条代表行。
分组和聚合查询常用于统计分析与数据挖掘,可以生成汇总报表与分析图表。