Выполнение побитовой операции для всех сгруппированных по значениям в 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