gpt4 book ai didi

postgresql - 返回组的任何值的聚合函数

转载 作者:行者123 更新时间:2023-11-29 12:03:17 26 4
gpt4 key购买 nike

我有一个大表,我想按一个列值对其进行分组并生成另一个列值的聚合。作为聚合,我不关心实际值,只要它是出现在按列分组的任何 行中的值即可。像 coalesce() 这样的东西,例如生成它在输入集中接收到的第一个非空值的聚合。

当然,coalesce()不是聚合函数,实际上没有符合我需要的行为的聚合函数,在文档中:

如何通过查询检索组中每个组的任何元素?我知道我可以使用 min()max() 但我宁愿避免将所有值相互比较以确定结果。理想的解决方案是防止为已经具有值的组访问更多页面。它是一个包含大量组(数十万行)的大表(磁盘上有几 GB)。

我看过there are recursive CTE and lateral joins .我正在努力思考这些问题,看看这些是否有帮助...

这是一个例子:

with t1(x) as (select * from generate_series(0, 10, 1)),
t2(x, y) as (select * from t1, t1 t2)

select x
, any_element(y) -- how can I simulate this any_element() aggregate function?
from t2
group by x
order by x

最佳答案

distinct on 将返回任何行:

with t1(x) as (select * from generate_series(0, 10, 1)),
t2(x, y) as (select * from t1, t1 t2)

select distinct on (x) x,y
from t2
where y is not null
order by x

或者按照评论中的建议使用 min/max

关于postgresql - 返回组的任何值的聚合函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42556344/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com