PostgreSQL で配列のカラムの中の値をカウントする
今回はアンケート機能の集計を実装した際に複数のレコードの配列のカラムから特定の値をカウントするクエリーを書いたので紹介したいと思います。
最初に実装したアンケートのイメージです。
1つの質問に対して複数チェックできるタイプです。
次にデータベースの構造です。ざっくりですがイメージです。
①テーブル名 : questions
②テーブル名 : question_items
③テーブル名 : answers
ここからが本題、テーブル answers のカラム question_item_ids のカウントをスッキリ検索したいと思います。
SELECT
id, (
SELECT
count(*)
FROM
answers
WHERE
q_items.id = ANY(question_item_ids)
)
FROM
question_items AS q_items
WHERE
question_id = 1
;
1発でそれぞれの count が検索できました。
以上です。
最後に自己紹介。
よく使うのはPHPとjQuery, たまに Vue.js, フレームワークは SILEX というのを使っています。データベースは PostgreSQL を使います。
自分のやった作業などをメモする場として note を使いたいと思っています。あとはアウトプットに慣れたい。
よろしくお願いします。