sql - 在percent_rank()之后过滤Postgresql查询

标签 sql postgresql

我正在尝试弄清楚如何正确执行此 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/

相关文章:

mysql - 具有多个值的 SQL 语句 WHERE 子句条件

sql - 在 SQL 中计算和划分来自多个列的不同值对

node.js - Node/Express & Postgresql - 当没有行匹配时

mysql - SQL 存储值,每日读数

sql - 索引字段上的多个过滤器

java - 谁能找出我在这份准备好的声明中做错了什么?

mysql - 用sql计算过期日期

database - postgresql 函数数据插入与 python

sql - 如何仅显示内部连接表列的最大值?

带有递归复制到的Postgresql