gpt4 book ai didi

sql - Postgres - 将两列聚合成一个项目

转载 作者:行者123 更新时间:2023-11-29 11:07:58 27 4
gpt4 key购买 nike

我想在分组时将两列聚合成一个“数组”。

假设有一个这样的表:

friends_map:
=================================
user_id friend_id confirmed
=================================
1 2 true
1 3 false
2 1 true
2 3 true
1 4 false

我想从此表中选择并按 user_id 分组并获取 friend_id 并确认为以逗号分隔的串联值。

目前我有这个:

SELECT user_id, array_agg(friend_id) as friends, array_agg(confirmed) as confirmed
FROM friend_map
WHERE user_id = 1
GROUP BY user_id

这让我:

=================================
user_id friends confirmed
=================================
1 [2,3,4] [t, f, f]

我怎样才能得到:

=================================
user_id friends
=================================
1 [ [2,t], [3,f], [4,f] ]

最佳答案

您可以避免多维数组的丑陋并使用一些支持混合数据类型的 json:

SELECT user_id, json_agg(json_build_array(friend_id, confirmed)) AS friends 
FROM friends_map
WHERE user_id = 1
GROUP BY user_id

或者使用一些 key : value 对,因为 json 允许这样做,所以如果您愿意,您的输出将更语义:

SELECT user_id, json_agg(json_build_object(
'friend_id', friend_id,
'confirmed', confirmed
)) AS friends
FROM friends_map
WHERE user_id = 1
GROUP BY user_id;

关于sql - Postgres - 将两列聚合成一个项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34163209/

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