Oracle分析函数
语法:函数(参数) over(partition by 要排序的字段 order by 排序的字段)
select e.empno,e.ename,e.job,e.mgr,e.sal,
e.deptno,
row_number() over(PARTITION BY e.deptno ORDER BY e.sal DESC) row_number_dept,--部门排行
AVG(e.sal) over(PARTITION BY e.deptno) avg_salary_department, --该部门薪水均值
SUM(e.sal) over(PARTITION BY e.deptno) sum_salary_department, --该部门薪水总额
COUNT(*) over(PARTITION BY e.deptno) count_emp_department, --部门所有的员工
dense_rank() over(PARTITION BY e.deptno ORDER BY e.sal DESC) rank_salary_dept, --该人员的部门薪水排行
dense_rank() over(ORDER BY e.sal DESC) rank_salary_company, --该人员的全公司排行
MIN(e.sal) over(PARTITION BY e.deptno) min_salary_dept, --部门的最低薪水
MAX(e.sal) over(PARTITION BY e.deptno) max_salary_dept, --部门的最高薪水
lag(e.ename, 1, '00') over(ORDER BY e.sal DESC) last_persion, --薪水在自己前一位的人
lead(e.ename, 1, '00') over(ORDER BY e.sal DESC) next_persion, --薪水在自己后一位的人
rownum row_number --行号
from emp e;