教学之友,学习之友。

站长教学网

当前位置: 站长教学网 > 电脑教学 > 软件 >

SQL实现增加排名列且排名列值相等时排名相同

时间:2013-08-27 16:31来源:未知 作者:ken 点击:

  sql 查询数据时按某列排序后增加排名列,需排名的列值相等时排名相同,即如需排名列数组为:9,9,8,7,7,6

添加的排名列数组需要显示为两种:

  第一种:1,1,3,4,4,6 (这种排名方法应该是最普遍的排名方法啦)   或者

  第二种:1,1,2,3,3,4 (某些特殊情况需要)

 

 --现在假设测试数据:创建临时表 #score 并插入数据

 create   table   #score(id   int,   points   float)   --id   为学号和points为成绩  
  insert   #score   select   1,   90  
  union       all     select   2,   85  
  union       all     select   3,   83  
  union       all     select   4,   85  
  union       all     select   5,   92 


  --测试得到上述第一种排名显示,SQL如下:  
  Select    
  points,  
  (Select   Count(1)+1   from   #score   Where   points>A.points)   As   排名  
  from   #score   A   Order   By   排名  

 
  --结果如下:   站长教学网 eduyo.com
  /*  

points  排名 
  92.0 1  
  90.0 2  
  85.0 3  
  85.0 3  
  83.0 5  
  */ 符合要求。

 

 --测试得到上述第二种排名显示,SQL如下:    
  Select    
  points,  
  (Select   Count(Distinct   points)+1   from   #score   Where   points>A.points)   As   排名  
  from   #score   A  
  Order   By   排名   
 

  --结果  
  /*

points 排名
  92.0 1  
  90.0 2  
  85.0 3  
  85.0 3  
  83.0 4  
  */   符合要求。

(责任编辑:ken)
TAG标签: sql 统计排名
顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
注册登录:不允许匿名留言,登录后留言无需输入验证码。
栏目列表
最新内容