SQL分组查询和过滤
-- 统计每个部门的平均⼯资,存在group by分组,select字句不能写group by没有的字段,除⾮这些⽤在聚合函数中 select deptno,avg(sal) from emp group by deptno;
-- 统计每个部门的⼈数,最⾼⼯资,最低⼯资,平均⼯资
select count(0) as ⼈数, max(sal) as 最⾼⼯资, min(sal) as 最低⼯资,avg(sal) from emp group by deptno; -- 统计每个部门的⼈数,最⾼⼯资,最低⼯资,平均⼯资,但是排除10部门
select deptno,count(1), max(sal),min(sal),avg(sal) from emp where deptno <> 10 group by deptno;
-- 统计每个部门的⼈数,最⾼⼯资,最低⼯资,平均⼯资,但是部门的平均⼯资⼩于2000不要统计
select deptno,count(1),max(sal),min(sal),avg(sal) from emp group by deptno having avg(sal) > 2000;
groupby分组-- SQL语句执⾏顺序,from > where > group by > having > select > order by, having 不能单独⽤
-- 在emp表中,列出⼯资最⼩值⼩于2000的职位
select job, min(sal) from emp group by job having min(sal) < 2000;
-- 统计⼈数⼩于4的部门的平均⼯资
select avg(sal) from emp group by deptno having count(1) < 4;
-- 统计各个部门的最⾼⼯资,排除最⾼⼯资⼩于3000的部门
select deptno,max(sal) from emp group by deptno having max(sal) < 3000;
-- 在emp 表中,列出每年⼊职的⼈数和最⾼⼯资,group by ⾥不能⽤聚合函数,普通函数可以
select count(1),max(sal),year(hiredate) from emp group by year(hiredate);

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。