oracle中的分组函数group by和having
一,oracle中的分组函数group by及其使用事项
1,案例:
按职位分组,查询每个职位的最高、最低薪水和人数
select job,max(salaary) max_s,min(salary) min_s,count(*) emp_num
from emp
group by job
order by emp_num
2, 注意:select后出现的列,凡是没有给组函数包围的列,必须出现在group by 短语中,否则出错。
如果group by 短语中的列,没有出现在select语句中不会出错,只是信息可能不全。
二,having
1,说明:having子句用于对分组后的数据进行过滤,where是对表中的数据进行过滤
2,案例:
查询平均薪水大于5000元的部门数据,没有部门的不算在内
select deptno,avg(nvl(salary,0)) avg_s
from emp
where deptno is not null
group by deptno
having avg(nvl(salary,0))>5000;
三,顺序
select
from
where
group by
having
order by