我的数据库中有以下信息:
+-----------------------+-------------+
| USERNAME TRUST | |
+-----------------------+-------------+
| DeaDTerra | 390 |
| OgNasty | 322 |
| Blazed | 303 |
| monbux | 260 |
| Tomatocage | 230 |
| Stunna | 220 |
| philipma1957 | 216 |
| John (John K.) | 180 |
| CanaryInTheMine | 173 |
| Mitchell | 165 |
+-----------------------+-------------+
我想运行一个将返回以下内容的查询:
+----------------------+
| USERNAME RANK |
+----------------------+
| Blazed 3 |
+----------------------+
我尝试了以下查询:
select top 25 username, trust, RANK() over (order by trust desc) AS Rank
from btcProfile
where profile_name='Blazed' order by trust
我得到的是:
+----------------------+
| USERNAME RANK |
+----------------------+
| Blazed 1 |
+----------------------+
如何只提取一条记录但根据RANK()
表中的所有行计算?
将窗口函数放在派生表中,并将过滤器移到派生表之外。这样,
RANK()
将在应用过滤器之前而不是之后计算函数。这是一种实现:确保RANK()函数按您希望的方式处理关系。目前尚不清楚这
TOP 25
与您的问题有何关系。如果您让我知道,我可以将其整合到我的答案中。