有没有办法在不在聚合调用中使用 ORDER BY 的情况下对 postgresql 自定义聚合中的行进行预排序?
Is there a way to pre-sort the rows in a postgresql custom aggregate without using ORDER BY in the aggregate call?
我在 pl/pgsql 中创建了一个自定义聚合,它要求根据输入列以特定方式对行进行排序。我可以通过在聚合调用中使用 ORDER BY
来完成此操作。我希望在聚合调用中不明确说明 ORDER BY
的情况下进行这种排序。
例如我有聚合函数 f(A 文本,B 文本)。我可以通过这样调用它来得到正确的计算:
select
X,
Y,
f(A, B order by A, B)
from
table
group by
X,
Y
我希望能够像这样调用它并在自定义聚合定义的某处指定排序。
select
X,
Y,
f(A, B)
from
table
group by
X,
Y
这可能吗?
如果您希望聚合对输入值进行排序,您可能必须编写状态更改函数,以便它仅收集输入并在最终函数中执行排序。如果您为大型 table.
缓存数据,这可能需要大量内存
根据聚合的作用,您可能会想出更好的解决方案,但不能依赖于特定的值顺序。
我在 pl/pgsql 中创建了一个自定义聚合,它要求根据输入列以特定方式对行进行排序。我可以通过在聚合调用中使用 ORDER BY
来完成此操作。我希望在聚合调用中不明确说明 ORDER BY
的情况下进行这种排序。
例如我有聚合函数 f(A 文本,B 文本)。我可以通过这样调用它来得到正确的计算:
select
X,
Y,
f(A, B order by A, B)
from
table
group by
X,
Y
我希望能够像这样调用它并在自定义聚合定义的某处指定排序。
select
X,
Y,
f(A, B)
from
table
group by
X,
Y
这可能吗?
如果您希望聚合对输入值进行排序,您可能必须编写状态更改函数,以便它仅收集输入并在最终函数中执行排序。如果您为大型 table.
缓存数据,这可能需要大量内存根据聚合的作用,您可能会想出更好的解决方案,但不能依赖于特定的值顺序。