首页 > 数据库技术 > 详细

sql rank()函数

时间:2016-04-20 21:48:16      阅读:212      评论:0      收藏:0      [点我收藏+]

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

 

sql rank()函数

原文:http://www.cnblogs.com/ilrc/p/5414414.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!