У меня есть таблица вроде этого:MySQL группировка по типу, а затем нарезка на диапазоны дат в столбцах
+----+------+-------------+
| 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
в подвыборки, у меня появилась ошибка, говорящая, что подзаголовок возвратил более одной строки.
Так как я могу это решить?
спасибо, что заблаговременно!