1 分组统计各部门下工资>500 的员工的平均工资、
select avg(sal) from emp where sal>500 group by deptno;
2 统计各部门下平均工资大于 500 的部门
select deptno,avg(sal) from emp group by deptno having avg(sal)>500;
3 算出部门 30 中得到最多奖金的员工奖金
select deptno,max(comm) from emp where deptno=30 group by comm,deptno ;
4 算出部门 30 中得到最多奖金的员工姓名
select ename,deptno,max(comm) from emp where deptno=30 group by deptno,ename;
5 算出每个职位的员工数和最低工资
select count(*),min(sal),job from emp group by job;
6 算出每个部门,,
每个职位的平均工资和平均奖金(平均值包括没有奖金),
如果平均奖金大于 300,显示“奖金不错”,
如果平均奖金 100 到 300,显示“奖金一般”,
如果平均奖金小于 100,显示“基本没有奖金”,
按部门编号降序,平均工资降序排列
select avg(sal),avg(nvl(comm,0)),deptno,job,
case
when avg(nvl(comm,0))>300 then '奖金不错'
when avg(nvl(comm,0))>=100 and avg(nvl(comm,0))<=300 then '奖金一般'
when avg(nvl(comm,0))<100 then '基本没有奖金'
end 奖金情况
from emp group by deptno,job order by 1 desc,4 desc;
7 列出员工表中每个部门的员工数,和部门 no
select deptno,count(*) from emp group by deptno;
8 得到工资大于自己部门平均工资的员工信息
select * from emp e where sal>(select avg(sal) from emp where deptno = e.deptno) ;
9 分组统计每个部门下,每种职位的平均奖金(也要算没奖金的人)和总工资(包括奖金)
select deptno,job,avg(nvl(comm,0)),sum(sal+nvl(comm,0)) from emp group by(deptno,job);