PGSQLПодсчет суммы по промежуткам дат
Есть таблица
value_timestamp | value
Нужно найти сумму за каждый день на протяжении заданного периода (time1:time2). То есть должна вернуться таблица с 365 строками. Сейчас, если есть данные не на каждый день, строки пропускаются. То есть если за определенное число данных в таблице нет, то строка в результат с нулевой суммой не попадает, как это можно изменить, что бы всегда возвращалось (time2-time1)/day значений (для строк, где нет данных для подсчета суммы должны быть в нули)?
SELECT date_trunc('day', value_timestamp) step, SUM(value)
FROM my
WHERE value_timestamp BETWEEN $1 AND $2
GROUP BY step
Ответы (1 шт):
Автор решения: Akina
→ Ссылка
SELECT generate_series step, SUM(value)
FROM generate_series($1, $2, '1 day')
LEFT JOIN my ON generate_series = date_trunc('day', value_timestamp)
GROUP BY generate_series