MIN(), MAX()是聚合函数.
group by 后面是要跟着的 select 中所有不是聚合函数的字段。
ex1: select count(*) from emp; //只是查询总总数 emp这张表里一共有多少条记录 所以不用group by
ex2: select count(*) , deptno from emp group by deptno;
// 根据deptno 分组, 查到的数据就是 列出 不同部门 记录总数
select count(*) , deptno , comm from emp group by deptno , comm;
// 根据deptno 和 comm 分组 以此类推
group by 后面是要跟着的 select 中所有不是聚合函数的字段 否则会报错。
举例:having avg(sal)>2000
having 相当于where 与where的唯一区别是 当查询语句中有 聚合函数 的时候 就不能用where 了 只能用having
having总结:
1、
having先对数据进行分组,然后再进行过滤,因此先使用group by进行分组
2、 如果没有使用group by,而使用having,这是将所有数据当成一组进行过滤
3、 having 不可以出现分组后的组内详细信息
4、 且如果where和having同时存在的话,where必须写在having前面
5、跟where的区别:
having先对数据进行分组,然后再进行过滤
where先将数据进行过滤,然后分组,因此where不能对统计信息进行过滤
死的顺序:
