【发布时间】:2016-03-13 19:19:34
【问题描述】:
我想在分组时将两列聚合成一个“数组”。
假设一个像这样的表:
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] ]
【问题讨论】:
-
从某种意义上说,这就是你刚开始时所拥有的。 :)
-
但我正在寻找的是分组在一个变量名下。这只是一个示例,它实际上是更大的连接查询的一部分,其中包含更多的表和数据。
标签: sql arrays postgresql aggregate-functions