函数 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的主要内容,如果未能解决你的问题,请参考以下文章

__saturatef() 内在函数没有等效的双精度

“查询结构与函数结果类型不匹配。返回类型双精度与第 1 列中的预期类型整数不匹配。”?

使用intel内在函数加载内存中等距的双精度数?

C语言,求高手分析双精度的输入,为啥定义一个双精度,输入函数中少了一个l,只用%f,可以执行,结果错误

我在哪里可以找到 AVX 指数双精度函数?

如何从c ++中的文件中读取双精度