nがひとつ多い。

えぬなおの技術的なことを書いていくとこ。

【SQL】集約関数でまとめるとき論理和が取れるboolor()とかboolor_agg()って便利ね

postgresとかだとboolorでできるみたいだけどsnowflakeでもboolor_aggで出来る。 www.fixes.pub

こんなデータがあります

create temp table test_boolean_agg(
    id integer,
    c1 boolean    );
    
 insert into test_boolean_agg (id, c1) values 
    (1, true),
    (2, true),
    (3, false),
    (3, false),
    (4, true),
    (4, true),
    (4, false),
    (3, true),
    (5, false),
    (5, false);

この時に、idでgroup byしつつ、 idが同じ同士でc1カラムで論理和取れたりとかしたら素敵じゃない?
例えば複数のイベントで、同じIDのカウントを取りつつ、フラグかtrueなものがきたかどうかは知りたい・・・みたいな。

こうする

select id, boolor_agg(c1), count(*)
from test_boolean_agg
group by 1;
ID   BOOLOR_AGG(C1)  COUNT(*)
1   TRUE    1
2   TRUE    1
3   TRUE    3
4   TRUE    3
5   FALSE   2

便利。