我正在尝试弄清楚如何正确执行此 PostgreSQL 查询。 我有一个“点”列,我想在点列上运行百分比排名,然后在计算百分比排名后使用 WHERE 子句过滤掉低于特定排名的人员。默认情况下,where 子句似乎发生在percent_rank 之前,这很好,因为我确实想在计算排名之前过滤掉一些内容,但在计算之后再对其进行更多过滤。
例如:
SELECT name,points,PERCENT_RANK() OVER (ORDER BY points)
FROM users
WHERE username IS NOT NULL
AND is_active = TRUE
然后仅通过percent_rank > .10 的人或其他过滤器来过滤此内容。
最佳答案
使用子查询:
SELECT u.*
FROM (SELECT name, points, PERCENT_RANK() OVER (ORDER BY points) as prank
FROM users
WHERE username IS NOT NULL AND is_active
) u
WHERE prank > 0.10;
关于sql - 在percent_rank()之后过滤Postgresql查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67511397/