前提・実現したいこと
SQLiteで、WHERE句で期間を指定して抽出したいのです。
単純なテーブルで説明させていただきます。
例えばtb_Itemという以下のようなテーブルがあるとします。
id | item | date |
---|---|---|
0 | apple | 2018-01-01 |
1 | apple | 2018-02-12 |
2 | apple | 2018-03-08 |
3 | orange | 2017-10-05 |
4 | orange | 2017-11-16 |
5 | orange | 2017-12-09 |
通常、WHERE句で期間を指定して抽出する場合は以下のように指定します。例えば2ヶ月間を指定します。
SQL
1SELECT COUNT(item) FROM tb_Item WHERE date >= '2018-02-01' AND date <= '2018-03-31' GROUP BY item;
このクエリーでは期間を指定しています。
しかし実現したいのは、「各Item毎に記録されている最終日から過去2ヶ月間」を指定してItemの個数を取得したいのです。
これはどのようにクエリーを記述するのでしょうか?
試したこと
WHERE句の中にMAX(date)を使ってみましたがエラーでした。どうやらWHERE句の中ではMAX関数は使えないようです。
SELECT COUNT(item) FROM tb_Item WHERE date >= DATE(MAX(date), '-2 months') AND date <= MAX(date) GROUP BY item;
補足情報(FW/ツールのバージョンなど)
バージョンはSQLite3.4です。
どうぞよろしくお願い致します。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/04/11 00:25