我一直在使用Postgres(版本9.2和9.3)这个功能:https://wiki.postgresql.org/wiki/Aggregate_Mode一段时间。现在最近升级到版本9.4后,我在使用该函数时遇到以下错误:
PG::WrongObjectType: ERROR: WITHIN GROUP is required for ordered-set aggregate mode LINE 1: SELECT mode(logins_count) AS mode_value FROM "registrations" WHERE "registrations"."cr...
执行以下操作时发生错误:
SELECT mode(logins_count) AS mode_value FROM registrations
WHERE registrations.created_at > '20141105';
我不明白错误信息,我不知道我必须改变什么?
答案 0 :(得分:4)
Postgres 9.4引入了一个新的聚合函数子类。 Per documentation:
有一个名为 ordered-set的聚合函数的子类
order_by_clause
必需的汇总,通常是因为 聚合的计算只在特定方面才合理 排序其输入行。
新的内置有序集合函数之一是mode()
碰巧碰到自定义聚合函数的名称。 (您所指的Postgres Wiki page自2013年以来尚未更新。)
为自定义聚合函数使用其他名称以避免碰撞 或者 更好 :改用新的内置函数。有关详细信息,请阅读updated Postgres Wiki。