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;

posted @ 2017-05-15 10:48  陆伟  阅读(130)  评论(0编辑  收藏  举报