У меня есть таблица с автоинкрементным числовым первичным.Я пытаюсь получить количество строк, которые соответствуют условию, сгруппированному по приращениям их первичного ключа.Учитывая данные:
| id | value |
|----|-------|
| 1 | a |
| 2 | b |
| 3 | a |
| 4 | a |
| 5 | b |
| 6 | a |
| 7 | b |
| 8 | a |
| 9 | b |
| 10 | b |
| 11 | a |
| 12 | b |
Если бы я хотел знать, сколько строк соответствует value = 'a'
для каждых пяти строк, результат должен быть:
| count(0) |
|----------|
| 3 |
| 2 |
| 1 |
Я могу вложить рядподзапросы в операторе SELECT
, например:
SELECT (SELECT count(0)
FROM table
WHERE value = 'a'
AND id > 0
AND id <= 5) AS `1-5`,
(SELECT count(0)
FROM table
WHERE value = 'a'
AND id > 5
AND id <=10) AS `6-10`,
...
Но есть ли способ сделать это с помощью оператора GROUP BY
или чего-то подобного, когда мне не нужно вручную записывать приращения?Если нет, есть ли более эффективный по времени метод, чем последовательность подзапросов в операторе SELECT
, как в приведенном выше примере?