十五、Mysql 分组查询

时间:2022-01-20 02:08:05

分组查询

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;
  1. mysql中,可以使用,但是数据无任何意义
  2. oracle中,会报错。

    注意:
    若一条DQL语句当中有group by 子句,那么select 关键字后面只能跟参与分组的字段和分组函数

    1. 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 排序输出