考虑以下数据
user_id | group_id
---------------------------
1 | 1
1 | 2
1 | 4
2 | 1
2 | 8
让我们说表名是user_group
。我想要关注输出
user_id | groups // binary or operation on all values of a user
--------------------
1 | 7 // i.e. 1 | 2 | 4 = 7
2 | 9 // i.e. 1 | 8 = 9
到目前为止,我可以获得所有group_id的数组。但是没有办法获得该数组中所有值的或产品。
user_id | groups
--------------------
1 | {1, 2, 4}
2 | {1, 8}
查询:select user_id, array_agg(group_id) from user_group group by user_id
答案 0 :(得分:2)
你可以做到
select user_id, bit_or(group_id) from user_group group by user_id;
似乎没有任何理由在这里使用数组聚合。