如何获取组列的所有值的OR产品

时间:2018-01-23 12:34:53

标签: sql postgresql bitwise-operators

考虑以下数据

 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

1 个答案:

答案 0 :(得分:2)

你可以做到

select user_id, bit_or(group_id) from user_group group by user_id;

似乎没有任何理由在这里使用数组聚合。