gpt4 book ai didi

postgresql - 在 postgresql 中对 array_agg 进行子选择

转载 作者:行者123 更新时间:2023-11-29 12:05:52 25 4
gpt4 key购买 nike

有没有办法在 Postgresql 9.2+ 的 having 子句中使用聚合函数的值?

例如,我想让每个 monkey_id 都具有第二高的 number > 123,以及第二高的数字。在下面的示例中,我想获取 (monkey_id 1, number 222)。

monkey_id | number
------------------
1 | 222
1 | 333
2 | 0
2 | 444

SELECT
monkey_id,
(array_agg(number ORDER BY number desc))[2] as second
FROM monkey_numbers
GROUP BY monkey_id
HAVING second > 123

我得到 column "second"does not exist

最佳答案

你必须把它放在 having 子句中

SELECT 
monkey_id
FROM monkey_numbers
GROUP BY monkey_id
HAVING array_agg(number ORDER BY number desc)[2] > 123

解释是 having 会在 select 之前执行,所以 second 此时仍然不存在。

关于postgresql - 在 postgresql 中对 array_agg 进行子选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16821764/

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