函数 corr(双精度, 双精度) 不存在 -- PostgreSQL

Posted

技术标签:

【中文标题】函数 corr(双精度, 双精度) 不存在 -- PostgreSQL【英文标题】:function corr(double precision, double precision) does not exist -- PostgreSQL 【发布时间】:2016-08-17 23:02:17 【问题描述】:

您好,当我在 PostgreSQL 中运行简单的关联查询时

select 
    corr(m07_selling_price_total_usd, m12_amount_of_commission_earned_usd)
from order;

我收到以下错误:

ERROR: function corr(double precision, double precision) does not exist

关于如何解决它的任何想法?这两个变量都是双精度的,所以根据文档 (http://www.postgresql.org/docs/9.4/static/functions-aggregate.html) 它应该可以工作。

【问题讨论】:

你能运行 select version();show search_path; 吗? Tx Clement,我查了一下,确实是 8.02(AWS 上的 Redshift),经过进一步研究,情况确实如此——它们不支持 corr()。正如您所建议的,这确实是版本问题。非常感谢您的帮助! 【参考方案1】:

由于corr 自 PostgreSQL 8.2 以来就存在,我猜你的search_path 配置不好。

当您使用非模式前缀对象时,此配置告诉 PostgreSQL 在哪里查找。

如果你明确指定模式应该可以工作(我用\df corr发现这个函数位于pg_catalog

select 
    pg_catalog.corr(m07_selling_price_total_usd, m12_amount_of_commission_earned_usd)
from "order";

【讨论】:

以上是关于函数 corr(双精度, 双精度) 不存在 -- PostgreSQL的主要内容,如果未能解决你的问题,请参考以下文章