1、分组查询 group by
- 数据表:
select 列名 from 表 group by 要分组的列名
SELECT MAX(score),s_sex,s_name FROM Student GROUP BY s_sex;
select 分组函数,列(要求出现在group by的后面) from 表 [where 刷选条件] group by 分组列表 [order by 字句|别名|函数 ]
SELECT
ROUND(AVG(s.score),1) AS '平均分',
c.classname
FROM Student s,class c
WHERE s.class_id = c.classid
GROUP BY s.class_id
ORDER BY '平均分';
1.1、按多个字段分组
SELECT
ROUND(AVG(score),1) AS 'avgscore',
Class_id,
s_sex
FROM Student
GROUP BY Class_id,s_sex
ORDER BY avgscore;
2、筛选
select 分组函数,列(要求出现在group by的后面) from 表 [where 刷选条件] group by 分组列表 [having > 筛选条件字句|别名|函数] [order by 字句|别名|函数 ]
SELECT
ROUND(AVG(s.score),1) AS '平均分',
c.classname
FROM
Student s,class c
WHERE s.class_id = c.classid
GROUP BY s.class_id
HAVING ROUND(AVG(s.score),1) > 80
ORDER BY ROUND(AVG(s.score),1) ;
数据源 | 位置 | 关键字 | |
---|---|---|---|
分组前刷选 | 原始表 | group by字句的前面 | where |
分组后刷选 | 分组后的结果集 | group by字句的后面 | having |