zoukankan      html  css  js  c++  java
  • 排序函数 rank() dense_rank()

    排序函数:
    1.rank() over(partition by 分组项 order by 排序项  [desc|asc])
    2.dense_rank() over(partition by 分组项 order by 排序项  [desc|asc])
    区别:
    dence_rank在并列关系后,不会跳过等级。rank则跳过。
    例子:
    1.select sal,rank() over(partition by deptno order by sal desc) from emp;(跳过)

           SAL RANK()OVER(PARTITIONBYDEPTNOORDERBYSALDESC)
    ---------- -------------------------------------------
          5000                                           1
          2450                                           2
          1300                                           3
          3000                                           1
          3000                                           1
          2975                                           3
          1100                                           4
           800                                           5
          2850                                           1
          1600                                           2
          1500                                           3

           SAL RANK()OVER(PARTITIONBYDEPTNOORDERBYSALDESC)
    ---------- -------------------------------------------
          1250                                           4
          1250                                           4
           950                                           6

    2.select deptno,sal,dense_rank() over(partition by deptno order by sal desc)  (不跳过)
      from emp;

        DEPTNO        SAL DENSE_RANK()OVER(PARTITIONBYDEPTNOORDERBYSALDESC)
    ---------- ---------- -------------------------------------------------
            10       5000                                                 1
            10       2450                                                 2
            10       1300                                                 3
            20       3000                                                 1
            20       3000                                                 1
            20       2975                                                 2
            20       1100                                                 3
            20        800                                                 4
            30       2850                                                 1
            30       1600                                                 2
            30       1500                                                 3

        DEPTNO        SAL DENSE_RANK()OVER(PARTITIONBYDEPTNOORDERBYSALDESC)
    ---------- ---------- -------------------------------------------------
            30       1250                                                 4
            30       1250                                                 4
            30        950                                                 5

    3.合计排序功能:计算出数值(4,1)在Orade By Col1,Col2排序下的排序值,也就是col1=4,col2=1在排序以后的位置
      SELECT RANK(4,1) WITHIN GROUP (ORDER BY col1,col2) "Rank" FROM table;
      结果如下:

      Rank
      4

      通过以上方法,得出col1为4,col2为1的那行数据的rank排名为多少

  • 相关阅读:
    osg利用矩阵投影在平面上产生阴影
    让openGL告诉你,什么是物体的移动与旋转
    利用openGL纯手工打造一个金字塔
    Java基础(四) StringBuffer、StringBuilder原理浅析
    Java基础(二) 基本类型数据类型、包装类及自动拆装箱
    Java基础(一) 八大基本数据类型
    小酌重构系列[20]——用条件判断代替异常
    小酌重构系列[19]——分解大括号
    小酌重构系列[18]——重命名
    小酌重构系列[17]——提取工厂类
  • 原文地址:https://www.cnblogs.com/sisier/p/4661031.html
Copyright © 2011-2022 走看看