GROUP BY 是 SQL 中的一个子句,用于将多行数据按照一个或多个列进行分组。通常与聚合函数(如 COUNT(), SUM(), AVG() 等)一起使用,以对每个分组进行汇总或计算。
注意:聚合函数的列不能出现在GROUP BY后面。
下面是一些使用 GROUP BY 的例子:
1. 基本的 GROUP BY 示例
例如一个简单的 students 表:
| id | name | age |
|----|-------|-----|
| 1 | Alice | 20 |
| 2 | Bob | 22 |
| 3 | Carol | 20 |
| 4 | Dave | 22 |
如果你想知道每个年龄有多少学生,你可以使用 GROUP BY:
SELECT age, COUNT(*) as num_students
FROM students
GROUP BY age;
结果:
| age | num_students |
|------|--------------|
| 20 | 2 |
| 22 | 2 |
2. 使用多个列进行分组
如果你想按年龄和性别分组,可以这样做:
SELECT age, gender, COUNT(*) as num_students
FROM students
GROUP BY age, gender;
3. 使用 HAVING 子句进行过滤
与 WHERE 子句不同,HAVING 子句用于过滤分组结果。例如,如果你只想看到有超过一个学生的年龄:
SELECT age, COUNT(*) as num_students
FROM students
GROUP BY age
HAVING num_students > 1;
4. 与聚合函数结合使用
你还可以与聚合函数结合使用 GROUP BY,例如计算每个年龄的平均分数:
SELECT age, AVG(score) as avg_score
FROM students
GROUP BY age;
这些是 GROUP BY 的基本用法。当然,还有许多高级用法和与其他 SQL 功能(如 JOIN)的结合使用。