微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

这是一个有效的 PERCENTILE_CONT SQL 查询吗?

如何解决这是一个有效的 PERCENTILE_CONT SQL 查询吗?

我正在尝试运行 sql 查询以在某个组内的表中查找第 50 个百分位数,但随后我也在同一字段中对结果进行分组。这是我的查询,例如通过 tpch 的国家表:

SELECT 
   regionkey,percentile_CONT(0.5) WITHIN GROUP(ORDER BY regionkey)
FROM "tpch/nation"
GROUP BY regionkey
ORDER BY regionkey

这是一个有效的查询吗?我正在尝试通过运行各种不同的百分位查询来对我的代码进行质量检查。 Postgres 为上述查询返回此结果:

 regionkey    | percentile_cont 
 -------------+-----------------
            0 |               0
            1 |               1
            2 |               2
            3 |               3
            4 |               4
 (5 rows)

但我的问题是在现实世界中,有人会尝试运行此类查询吗?我是聚合函数的新手,特别是百分位函数

解决方法

您可以使用 percentile_cont() 来获取某个有序值的百分比。例如,如果您有一个用于该地区的 population 列,那么您可以将人口中位数计算为:

SELECT regionkey,PERCENTILE_CONT(0.5) WITHIN GROUP (ORDER BY population)
FROM "tpch/nation"
GROUP BY regionkey
ORDER BY regionkey;

regionkey 中使用 ORDER BY 是没有意义的。在每一组中,regionkey 只有一个值。因此,PERCENTILE_CONT() 只能返回该值。

但是,它对于几乎任何其他列都非常有用。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。