MySQL中的分组和聚合函数可以用于统计和汇总数据。
- 分组使用GROUP BY语句:
sql
SELECT col1, col2
FROM table1
GROUP BY col1;
这会将table1表中的行分成多组,每组具有相同的col1值。
- 聚合函数用于统计分组后的值,常用的有:
- COUNT():计数
- MAX():最大值
- MIN():最小值
- SUM():求和
- AVG():平均值
sql
SELECT col1, COUNT(*) AS num
FROM table1
GROUP BY col1;
这会统计每个col1分组后的行数。
- WHERE过滤分组前的数据,HAVING过滤分组后的数据:
sql
SELECT col1, COUNT(*) AS num
FROM table1
WHERE col2 > 0 # 分组前过滤
GROUP BY col1
HAVING num > 2; # 分组后过滤
- 可以对多个字段进行分组,分组顺序跟在GROUP BY子句中字段的顺序一致:
sql
SELECT col1, col2, COUNT(*) AS num
FROM table1
GROUP BY col1, col2;
首先按col1分组,然后每个col1分组内再按col2分组。
- 与DISTINCT类似,GROUP BY可以去除重复行:
sql
SELECT col1
FROM table1
GROUP BY col1;
这种用法实际上是分组后只选取一条代表行。
分组和聚合查询常用于统计分析与数据挖掘,可以生成汇总报表与分析图表。