zoukankan      html  css  js  c++  java
  • sql rank()函数

    RANK() OVER([<partiton_by_clause>])


      partition_by_clause 将from子句生成的结果集划分为应用到RANK函数的分区。 
      Order_by_clause确定将RANK值应用到分区中的行时所使用的顺序。

     以下用一个成绩表作示例
      table 架构
      s_score(s_class(班级),s_id(学号),s_score(分数))
      SQL statement1:
      Select rank() over(order by s_score desc) as 名次,s_class,s_id,s_score from s_score
      结果集如下
      名次 s_class s_id s_score
      1 二班 S20090733 100
      2 一班 S20090635 99
      3 三班 S20090919 97
      4 一班 S20090846 96
      5 一班 S20090825 95
      6 二班 S20090715 94
      7 三班 S20090836 91
      8 二班 S20090631 86
      SQL statement2:
      Select rank() over(partition by s_class order by s_score desc) as 名次,s_class,s_id,s_score from s_score
      结果集如下
      名次 s_class s_id s_score
      1 三班 S20090919 97
      2 三班 S20090836 91
      1 二班 S20090733 100
      2 二班 S20090715 94
      3 二班 S20090631 86
      1 一班 S20090635 99
      2 一班 S20090846 96
      3 一班 S20090825 95

    排名函数是SQL Server2005新加的功能。在SQL Server2005中有如下四个排名函数:

      1.row_number

      2.rank

      3.dense_rank

      4.ntile  

    dense_rank

      dense_rank函数的功能与rank函数类似,只是在生成序号时是连续的,而rank函数生成的序号有可能不连续。如上面的例子中如果使用dense_rank函数,第4条记录的序号应该是2,而不是4。如下面的SQL语句所示:

    select dense_rank() over(order by field1),* from t_table order by field1

    详解:http://www.cnblogs.com/xhyang110/archive/2009/10/27/1590448.html

  • 相关阅读:
    好文推荐
    高效词频分析
    内网渗透技巧:判断机器真实外网IP的5种方法总结
    禁用substr、substring、mid函数的sql注入脚本
    内网文件传输
    工作
    我是如何逃过所有杀软进行内网端口转发的
    扎克伯格开发的家用AI: Jarvis
    Python初学者之网络爬虫(二)
    Python初学者之网络爬虫
  • 原文地址:https://www.cnblogs.com/ilrc/p/5414414.html
Copyright © 2011-2022 走看看