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;
 
                     
                    
                 
                    
                
 
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号