按生成的时间序列中的日期对值进行分组

时间:2018-04-22 14:00:47

标签: group-by time-series amazon-redshift

我有一个名为'daily_budgets'的表:

+----+------------+----------+--------------+
| id | start_date | end_date | daily_budget |
+----+------------+----------+--------------+
| 1  | 25/04/18   | 29/04/18 | 500          |
+----+------------+----------+--------------+
| 2  | 26/04/18   | 27/04/18 | 1000         |
+----+------------+----------+--------------+

显示项目在指定时间范围(start_date - end_date)之间的每日预算。

然后我有另一个名为'year_2018'的地方,我在那里生成了一个time_series,其中包含2018年的所有日期:

+----------+
| date     |
+----------+
| 01/01/18 |
+----------+
| 02/01/18 |
+----------+
| 03/01/18 |
+----------+
| 04/01/18 |
+----------+
| 05/01/18 |
+----------+
etc.

现在我只想加入这两个表,以便按日期对每日总计进行分组。结果表中的第一个日期应该是表'daily_budgets'中的最小start_date。

+----------+--------------+
| date     | daily_budget |
+----------+--------------+
| 25/04/18 | 500          |
+----------+--------------+
| 26/04/18 | 1500         |
+----------+--------------+
| 27/04/18 | 1500         |
+----------+--------------+
| 28/04/18 | 500          |
+----------+--------------+
| 29/04/18 | 500          |
+----------+--------------+

非常感谢您的帮助!

我正在使用:i686-pc-linux-gnu上的PostgreSQL 8.0.2,由GCC gcc(GCC)3.4.2 20041017(Red Hat 3.4.2-6.fc3)编译,Redshift 1.0.2058

1 个答案:

答案 0 :(得分:1)

根据日历表中的日期条件加入两个表格,其中包括开始和结束预算日期之间(包括)。然后按日期汇总以生成总计。

Hello
false 
true

请注意,我在此处使用内部联接,这样可以过滤日历表中的任何日期,这些日期不会出现在预算表中的至少一个记录中。这应该强制您报告的最早日期也是预算表中最早的日期。