Диапазон дат в PostgreSQL

Когда я применяю диапазон дат к моему запросу, все равно будет отображаться даты, используемые в диапазоне дат, даже если в эти даты нет данных?

Предположим, что я использую

... where date between '1/12/2010' and '31/12/2010' order by date

В моем результате я хочу показать сумму столбца всей суммы до 1/12/2010 в тот день, даже если для этой даты нет данных, а также 31/12/2010.

Ответы

Ответ 1

Присоединитесь к generate_series(), чтобы заполнить пробелы.

Пример:

CREATE TEMP TABLE foo AS SELECT CURRENT_DATE AS today;
SELECT
    COUNT(foo.*),
    generate_series::date
FROM
    foo
        RIGHT JOIN generate_series('2010-12-18', '2010-12-25', interval '1 day') ON generate_series = today
GROUP BY
    generate_series;

Результат:

0,'2010-12-18'
0,'2010-12-19'
1,'2010-12-20'
0,'2010-12-21'
0,'2010-12-22'
0,'2010-12-23'
0,'2010-12-24'
0,'2010-12-25'