我使用时遇到问题RANK() https://msdn.microsoft.com/en-us/library/ms176102.aspx在 SQL Server 中。
这是我的代码:
SELECT contendernum,
totals,
RANK() OVER (PARTITION BY ContenderNum ORDER BY totals ASC) AS xRank
FROM (
SELECT ContenderNum,
SUM(Criteria1+Criteria2+Criteria3+Criteria4) AS totals
FROM Cat1GroupImpersonation
GROUP BY ContenderNum
) AS a
该查询的结果是:
contendernum totals xRank
1 196 1
2 181 1
3 192 1
4 181 1
5 179 1
我想要的结果是:
contendernum totals xRank
1 196 1
2 181 3
3 192 2
4 181 3
5 179 4
我想根据以下内容对结果进行排名totals
。如果有相同的值181
,那么两个数将具有相同的xRank
.
Change:
RANK() OVER (PARTITION BY ContenderNum ORDER BY totals ASC) AS xRank
to:
RANK() OVER (ORDER BY totals DESC) AS xRank
看看这个例子:
SQL 小提琴演示 http://www.sqlfiddle.com/#!3/d41d8/4964/0
您可能还想看看之间的区别排名 (Transact-SQL) http://msdn.microsoft.com/en-us/library/ms176102%28v=sql.100%29.aspx and DENSE_RANK (Transact-SQL) http://msdn.microsoft.com/en-us/library/ms173825%28v=sql.100%29.aspx:
RANK(事务 SQL)
如果两个或多个行并列排名,则每个并列的行都会获得相同的排名
秩。例如,如果两位顶级销售人员具有相同的 SalesYTD
值,两者均排名第一。排名第二的销售人员
SalesYTD 排名第三,因为有两行
排名较高。因此,RANK 函数并不总是返回
连续整数。
DENSE_RANK(事务 SQL)
返回结果集分区内的行排名,不带
排名中的任何差距。行的排名是一加行的数量
位于相关行之前的不同排名。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)