今回の課題
FIRST_VALUE
などのナビゲーション関数を使用する時や、
array_agg
で配列を生成する際に、NULLを除いて処理を実行したい。
そういった時に、IGNORE NULLS
というオプションが役に立つ。
使用クエリの例
今回は、array_agg
の例でメモをする。
select
enquete_id
, array_to_string(array_agg(case when questions_sort_code = 0 then answer end ignore nulls order by rows_sort_code), '|') as answer
from
`テーブル名`
group by
enquete_id
クエリの解説
1)answerカラムのデータを配列で結合して一つのレコードに格納
array_agg(case when questions_sort_code = 0 then answer end ignore nulls order by rows_sort_code)
enquete_id
毎に、question_sort_code
が0のデータのNULLを除外して、
answer
をrows_sort_code
の昇順で、配列にして1つのレコードに格納する。
2)1つのレコードに配列で格納されているものを一つの文字列にする
array_to_string(array_agg(case when questions_sort_code = 0 then answer end ignore nulls order by rows_sort_code), '|')
1)で配列にして格納したデータを、|
を間に入れて、文字列で結合してレコードに格納する。
※参考:ナビゲーション関数(IGNORE NULLSについて記載)
以上です。