首页 > 解决方案 > 使用 Postgres 插入额外的行

问题描述

我正在尝试编写查询以获取每天的总销售额,结果应该包含从 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 年 5 月 1 日至今的所有缺失日期,我希望得到如下截图所示的答案。

谢谢

前任:在此处输入图像描述

这是我原来的桌子。

在此处输入图像描述

标签: sqlpostgresql

解决方案


你会使用一个left joingenerate_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;

推荐阅读