【发布时间】:2019-09-13 19:07:16
【问题描述】:
我想要单个记录的 PERCENT_RANK 值,但与整个表相关。这可能吗?
我见过的例子是这样的:
SELECT Name, Salary
PERCENT_RANK() OVER (ORDER BY Salary)
FROM Employees
请注意,它正在计算返回的记录集的百分位数。如果您要退回整张桌子,那就太好了。但是,如果您要返回一个子集,那么当我想要整个表(对于一组行,我 不要返回)。
文档是这样说的:
计算一行在一组行中的相对排名
这不是我想要的。基本上,我想这样做(注意:这是非工作代码):
SELECT Name, Salary
PERCENT_RANK() OVER (SELECT * FROM Employees ORDER BY Salary)
FROM Employees
所以,实际上,我想说,“给我这个记录的百分位数与整个表格相比。”
在上述情况下,它是相同的,因为我要检索整个表。但我无法提取一条记录并获得其在整个表格中的百分位排名。
SELECT Name, Salary
PERCENT_RANK() OVER (ORDER BY Salary)
FROM Employees
WHERE id = 1234
那一条记录将始终为 1.000,因为它位于所有返回行的 100% 百分位,这只是一条。
【问题讨论】:
标签: sql-server tsql statistics percentile