码迷,mamicode.com
首页 > 其他好文 > 详细

分析函数

时间:2016-05-23 01:08:22      阅读:140      评论:0      收藏:0      [点我收藏+]

标签:oracle

--row_number

SELECT ename,

       deptno,

       rownum,

       row_number() over(ORDER BY deptno) rn,

       rank() over(ORDER BY deptno) rk, --跳号

       dense_rank() over(ORDER BY deptno) dense_rk --不跳号

  FROM emp-- over 必须跟order by

 --row_number

SELECT ename,

       deptno,

       rownum,

       row_number() over(partition by deptno ORDER BY deptno) rn,

       rank() over(partition by deptno ORDER BY deptno) rk, 

       dense_rank() over(partition by deptno ORDER BY deptno) dense_rk 

  FROM emp



 --row_number

SELECT ename,

       deptno,

       rownum,

       row_number() over(partition by deptno ORDER BY sal) rn,

       rank() over(partition by deptno ORDER BY sal) rk,

       dense_rank() over(partition by deptno ORDER BY sal) dense_rk

  FROM emp

--求每个部门的最高工资

SELECT *

  FROM (SELECT ename,

               deptno,

               rownum,

               row_number() over(PARTITION BY deptno ORDER BY sal DESC) rn

        --rank() over(partition by deptno ORDER BY sal) rk,

        --dense_rank() over(partition by deptno ORDER BY sal) dense_rk

          FROM emp)

 WHERE rn = 1

 --sum,avg,max,min

 SELECT ename,

        deptno,

        sal,

        SUM(sal) over(PARTITION BY deptno) AS "部门汇总", SUM(sal) over() AS "全部汇总"

   FROM emp;


--累加

SELECT ename,

        deptno,

        sal,

        SUM(sal) over(order BY sal), SUM(sal) over(order BY sal,rowid)

   FROM emp;



 SELECT ename,

        deptno,

        sal,

        avg(sal) over(PARTITION BY deptno) AS "部门汇总", avg(sal) over() AS "全部汇总"

   FROM emp;

SELECT empno,

       ename,

       sal

  FROM emp a

 WHERE sal = (SELECT MIN(sal) FROM emp b WHERE a.deptno = b.deptno)

--改写

SELECT *

  FROM (

        

        SELECT a.*,

                row_number() over(PARTITION BY a.deptno ORDER BY a.sal) rn

        

          FROM emp a)

 WHERE rn = 1

 


SELECT *

  FROM emp

 WHERE sal in(SELECT MIN(sal) over(PARTITION BY deptno ORDER BY sal) FROM emp a);


分析函数

标签:oracle

原文地址:http://7642644.blog.51cto.com/7632644/1776008

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!