Вставка дополнительных строк с помощью Postgres

#sql #postgresql

#sql #postgresql

Вопрос:

Я пытаюсь написать запрос, чтобы получить общий объем продаж за день, результаты должны содержать все даты с 2020-05-01 до текущей даты, независимо от того, была ли в тот день распродажа или нет. Приведенный ниже запрос выдаст результаты для продаж на соответствующую дату, присутствующую в моей таблице.

 select date as DATE, SUM (order_amount_in_eur) 
from orders 
where date >= '2020-05-01' group by 1;
  

Я хочу, чтобы дополнительные строки даты, начиная с 2020-05-01 до сегодняшнего дня, которые не существуют в таблице, и имели нулевое значение в столбце продаж соответствующей даты, когда продаж было ноль / нет.
Я хочу получить ответ, как показано ниже на прилагаемом скриншоте, для всех недостающих дат, начиная с 2020-05-01 по сегодняшний день.

Спасибо

ПРИМЕР: введите описание изображения здесь

Это моя исходная таблица.

введите описание изображения здесь

Комментарии:

1. Я удалил несовместимые теги базы данных. Пожалуйста, помечайте только ту базу данных, которую вы действительно используете.

Ответ №1:

Вы бы использовали left join и generate_series() :

 select gs.dte, coalesce(sum(order_amount_in_eur), 0)
from generate_series('2020-05-01'::date, current_date, interval '1 day') gs(dte) left join
     orders o
     on o.date = gs.dte
group by gs.dte;