Oracle统计函数 (学习笔记)

count(*),count([distinct] 列名),sum(),avg(),max(),min().
例如:要求计算雇员的平均服务年限:
select trunc(avg(months_between(sysdate,hiredate)/12)) from emp;

分组查询:
    例如:统计出每个职位的名称,人数,平均工资:
select job,count(*),avg(sal)
from emp
group by job;

 统计限制:
    限制一:在没有编写group by 子句,表示全表分组,此时select子句中只允许出现统计函数,不允许出现其他字段。
错误代码:select count(ename),ename from emp;
    限制二:在使用group by 子句分组的时候,select子句中只允许出现分组字段与统计函数,其他字段不允许出现。
错误代码:select job,count(ename),ename from emp group by job;
    限制三:统计函数允许嵌套,但是嵌套后select中不允许再出现任何字段,包括分组字段。
错误代码:select deptno,max(avg(sal))
from emp
group by deptno;

where 子句上不允许使用统计函数,原因:where是在group by之前使用的,属于分组前的数据筛选。
having :  进行分组后的过滤

  例如:select job,avg(sal) from emp group by job having avg(sal)>2000;

显示非销售人员的工作名称以及从事同一工作雇员的工资的总和,并且要满足从事同一工作的雇员的工资>5000,输出结果按月工资的合计升序排序
select job,sum(sal) sum from emp where job<>'salsman' group by job having sum(sal)>5000 order by sum asc;































你可能感兴趣的:(oracle)