Выполнение побитовой операции для всех сгруппированных по значениям в Presto

Мне нужно выполнить BITWISE_ORпо всем сгруппированы по значениям.
Скажем, мои значения в группе по: 100, 010 и 110. И мне нужно вычислить «100 или 010 или 110», что равно 110.

Итак, я хочу сделать что-то вроде: select col1, array_agg(col2) from table group by col1, затем примените bitwise_orдля всех значений col2 в массиве. Есть функция bitwise_or_agg, но это не работает с массивом.

Любая помощь приветствуется!

1 ответ

bitwise_or_agg(x) - функция агрегирования (возвращает побитовое «или» всех входных значений), используйте ее вместо (или вместе с) array_agg:

      select col1, 
       array_agg(col2) as my_array, 
       bitwise_or_agg(col2) as my_array_bitwise_or
  from table group by col1
Другие вопросы по тегам