次のようなテーブルがあります。
+----+------+-------------+
| id | type | date |
+----+------+-------------+
| 1 | abc | [some date] |
| 2 | def | [some date] |
| 3 | abc | [some date] |
| 4 | abc | [some date] |
| 5 | xyz | [some date] |
+----+------+-------------+
そして、私はこのような結果を目指しています:
+------+-----------+------------+-----------+
| type | last year | last month | last week |
+------+-----------+------------+-----------+
| abc | 5489 | 355 | 101 |
| def | 2235 | 115 | 59 |
| xyz | 1998 | 180 | 75 |
+------+-----------+------------+-----------+
数字は、指定された日付範囲内のそれぞれのタイプの行の数を表します。
私はこれらの線に沿って物事を試しました:
SELECT type,
(SELECT count(*) FROM table WHERE [date last year]) AS `last year`,
(SELECT count(*) FROM table WHERE [date last month]) AS `last month`,
(SELECT count(*) FROM table WHERE [date last week]) AS `last week`
FROM table
GROUP BY type
しかし、それは各タイプに対して同じ数 (指定された日付範囲の合計数) を返しました。サブセレクトにステートメントを追加するGROUP BY
と、サブセレクトが複数の行を返したというエラーが表示されました。
では、どうすればこれを解決できますか?
事前にどうもありがとうございました!