Дано:
table 'thing':
age
---
3.4
3.4
10.1
40
45
49
Я хочу подсчитать количество вещей для каждого 10-летнего диапазона, например,
age_range | count
----------+-------
0 | 2
10| 1
20| 0
30| 0
40| 3
Этот запрос близок:
SELECT FLOOR(age / 10) as age_range, COUNT(*)
FROM thing
GROUP BY FLOOR(age / 10) ORDER BY FLOOR(age / 10);
Вывод:
age_range | count
-----------+-------
0 | 1
1 | 2
4 | 3
Однако это не так. т показать мне диапазоны, которые имеют 0 счетов. Как я могу изменить запрос, чтобы он также отображал промежуточные диапазоны с 0 счетчиками?
Я нашел похожие вопросы stackoverflow для подсчета диапазонов, некоторые для 0 подсчетов, но они требуют указания каждого диапазона (либо жестко кодируя диапазоны в запросе, либо помещая диапазоны в таблицу). Я бы предпочел использовать общий запрос, подобный приведенному выше, где мне не нужно явно указывать каждый диапазон (например, 0-10, 10-20, 20-30,...). Я использую PostgreSQL 9.1.3.
Можно ли изменить приведенный выше простой запрос, включив в него 0 счетчиков?
Аналогично:
Oracle: как "группировать" по диапазону?
Получить частотное распределение десятичного диапазона в MySQL