分组查询
1. gourp by 和 having 子句
select job, max(sal) from emp group by job;
备注:
1. 以上SQL表示,先安装job分组,然后对每一组使用max(sal) 求最高薪水
select ename, job, max(sal) from emp group by job;
- mysql中,可以使用,但是数据无任何意义
-
oracle中,会报错。
注意:
若一条DQL语句当中有group by 子句,那么select 关键字后面只能跟参与分组的字段和分组函数-
where 条件需要写在group by前面,因为先执行where子句,在执行group by子句。
having 在group by 之后进行过滤
where 在group by 之前 进行过滤
-
总结
select
.....
from
....
group by
....
having
....
order by
....
1.顺序不能改变,
2.执行顺序:
2.1 from 从某张表中检索数据
2.2 where 经过某些条件进行过滤
2.3 group by 然后分组
2.4 having 分组之后在进行过滤
2.5 select 查询出现
2.6 order by 排序输出