我想知道所有用户中排名最高的用户。假设这是表格:
UserName | Coins
---------------
Matthew | 18
Nick | 12
Cat | 33
猫的硬币最多,因此她将排名第一,尼克将排名第三。如何通过查询获得她的排名?
最佳答案
这里的一种选择是使用相关子查询来找到密集等级。
SELECT
t1.UserName,
t1.Coins,
t2.rank
FROM yourTable t1
INNER JOIN
(
SELECT
t1.Coins,
(SELECT COUNT(*) FROM (SELECT DISTINCT Coins FROM yourTable) t2
WHERE t2.Coins >= t1.Coins) rank
FROM (SELECT DISTINCT Coins FROM yourTable) t1
) t2
ON t1.Coins = t2.Coins;
上面的查询尝试处理两个或多个用户具有相同币种级别的极端情况。它将按以下方式分配密集等级:
UserName | Coins | Rank
-----------------------
Cat | 33 | 1
Matthew | 18 | 2
Nick | 12 | 3
Michael | 12 | 3
Donald | 12 | 3
Jim | 10 | 4
Alf | 10 | 4