PostgreSQL调用percentile_cont计算中位数报错函数不存在如何解决
错误原因
你写的SQL存在两处问题:
percentile_cont的WITHIN GROUP (ORDER BY)子句中错误加入了name字段:percentile_cont仅支持对单个数值类型的列计算百分位,你同时传入了字符类型的name和数值类型的value作为排序参数,PostgreSQL没有匹配入参类型的函数重载,因此触发类型不匹配报错。- 缺少分组声明:你需要按
Name分组计算中位数,需要显式增加GROUP BY name子句。
正确写法
SELECT name, percentile_cont(0.5) WITHIN GROUP (ORDER BY value) AS value FROM TableX GROUP BY name;
结果验证
执行上述SQL后,Bob只有1条记录,中位数取本身100;Cathy的value列排序后为[100,200,500],0.5分位取值为200,和你期望的输出完全一致。
内容的提问来源于stack exchange,提问作者Helene
相关产品推荐
相关产品推荐

