次のようなテーブルがあります
SELECT id, alive, open_at FROM schedules; +----+-------+---------------------+ | id | alive | open_at | +----+-------+---------------------+ | 1 | 1 | 2019-11-01 00:00:00 | | 2 | 0 | 2019-11-30 00:00:00 | | 3 | 1 | 2019-12-01 00:00:00 | | 4 | 1 | 2019-12-31 00:00:00 | | 5 | 0 | 2020-01-01 00:00:00 | | 5 | 0 | 2020-01-31 00:00:00 | +----+-------+---------------------+
これらを年別にグループ化すると次のようになります
SELECT DATE_FORMAT(open_at, '%Y') AS op_year, DATE_FORMAT(open_at, '%c') AS op_month FROM schedules GROUP BY (DATE_FORMAT(open_at, '%Y-%m')) HAVING op_year = 2019 ; +---------+----------+ | op_year | op_month | +---------+----------+ | 2019 | 11 | | 2019 | 12 | | 2020 | 1 | +---------+----------+
今回したいことは、年別にグループ化した上で、
そのグループにあるレコードのaliveの値が、全て1であるか否かを取得することです。
次のような形でレコードを取得したいです
SELECT (なにかCASE文を使う?) AS alives, DATE_FORMAT(open_at, '%Y') AS op_year, DATE_FORMAT(open_at, '%c') AS op_month FROM schedules GROUP BY (DATE_FORMAT(open_at, '%Y-%m')) HAVING op_year = 2019 ; +--------+---------+----------+ | alives | op_year | op_month | +--------+---------+----------+ | 0 | 2019 | 11 | | 1 | 2019 | 12 | | 0 | 2020 | 1 | +--------+---------+----------+
このような形でレコードを取得するには、どのようなSQL文を発行すればいいのでしょうか?
回答5件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。