日期:2014-05-16  浏览次数:20497 次

oracle 分析函数以及实例解析

1.排名函数:

RANK and DENSE_RANK Functions

语法如下:

RANK ( ) OVER ( [query_partition_clause] order_by_clause )

DENSE_RANK ( ) OVER ( [query_partition_clause]order_by_clause )

在排名函数中order by是不可选字段,表示你要按什么进行排名,partition是可选字段,如果没有partition则表示对全部数据进行排名,如果有partition则表示在分区内进行排序。

 

我们先来看一个例子:

SQL> SELECT EMPNO,

  2         DEPTNO,

  3         SUM(SAL) SAL,

  4         RANK() OVER(ORDER BY SUM(SAL) DESC)RANK_DESC,

  5         RANK() OVER(ORDER BY SUM(SAL))RANK_ASC,

  6         DENSE_RANK() OVER(ORDER BY SUM(SAL)DESC) DENSE

  7    FROM EMP

  8   GROUP BY DEPTNO, EMPNO;

 

     EMPNO     DEPTNO        SAL RANK_DESC   RANK_ASC      DENSE

---------- ---------- ---------- ---------- --------------------

      7900         30        950         14          1         12

      7876        20       1100         13          2         11

      7521         30       1250         11