【发布时间】:2019-10-23 06:53:15
【问题描述】:
这是表格:
StuId Name Class Marks
-----------------------------
2003 aman X-A 91
2005 ankita X-A 89
2010 Aakash X-A 87
2011 Cyril X-A 87
2012 Bala X-B 87
2013 Sara X-C 89
2014 Katlyn X-C 89
2015 Casy X-C 87
2016 Katie X-B 93
我需要输出表是:
StuId Name Class Marks Rank
-----------------------------------
2003 aman X-A 91 1
2005 ankita X-A 89 2
2010 Aakash X-A 87 3
2011 Cyril X-A 87 3
2016 Katie X-B 93 1
2012 Bala X-B 87 2
2013 Sara X-C 89 1
2014 Katlyn X-C 89 1
2015 Casy X-C 87 3
为此我执行了以下查询:
SELECT *,
RANK() OVER (PARTITION BY Class ORDER BY Marks DESC) AS Rank
FROM StudentTable;
但是如何在不使用Rank() 的情况下获得相同的结果?
【问题讨论】:
-
但是你为什么不想使用 Rank() 呢?您是否面临任何性能问题?
-
使用 Rank() 没有问题,我已将其作为一项任务。
-
可以使用其他窗口功能吗?
-
我可以使用 Count()
标签: sql sql-server rank