增加排名列SQL语句(需排名的列值相等时排名相同)

    SQL 查询数据时按某列排序后增加排名列,需排名的列值相等时排名相同,即如需排名列数组为:9,9,8,7,7,6
    添加的排名列数组需要显示为两种:
  第一种:1,1,3,4,4,6 (这种排名方法应该是最普遍的排名方法啦) 或者
  第二种:1,1,2,3,3,4 (某些特殊情况需要)

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

  2.  create table #score(id int, points float) --id 为学号和points为成绩

  3.   insert #score select 1, 90
  4.   union all select 2, 85
  5.   union all select 3, 83
  6.   union all select 4, 85
  7.   union all select 5, 92

  8.   --测试得到上述第一种排名显示,SQL如下:

  9.   Select
  10.   points,
  11.   (Select Count(1)+1 from #score Where points>A.points) As 排名
  12.   from #score A Order By 排名
  13.  
  14.   --结果如下:

  15.   /*
  16. points 排名
  17.   92.0 1
  18.   90.0 2
  19.   85.0 3
  20.   85.0 3
  21.   83.0 5
  22.   */
  23. --符合要求。
  24.  
  25.  --测试得到上述第二种排名显示,SQL如下:

  26.   Select
  27.   points,
  28.   (Select Count(Distinct points)+1 from #score Where points>A.points) As 排名
  29.   from #score A
  30.   Order By 排名
  31.   --结果

  32.   /*
  33. points 排名
  34.   92.0 1
  35.   90.0 2
  36.   85.0 3
  37.   85.0 3
  38.   83.0 4
  39.   */
  40. --符合要求。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值