グループ内の少なくとも1つの行がbar='baz'
と一致する場合、すべての行をfoo
でグループ化したいとします。Postgres:GROUP BYの後に一致するパターン
私はそうのようなクエリがある:
SELECT foo, string_agg(bar)
FROM table
WHERE bar='baz'
GROUP BY foo;
はしかし、これは明らかにbar!=baz
行を残します。 グループ内の少なくとも1つが一致する場合、それらの行を含める必要があります。 これを達成する最も良い方法は何ですか?
私は例えば、ARRAY_AGG(バー)といずれかを使用してサブ選択を使用して検討している:
SELECT foo, bars FROM (
SELECT foo, array_agg(bar) as bars
FROM table
WHERE 'baz' ANY(bars)
GROUP BY FOO
)
しかし、これは醜いソリューションのように思えるし、また、私はstring_aggを使用することはできません。
あなたはデータサンプルと期待される結果を追加してくださいだろう?.. –