【发布时间】:2020-09-30 10:09:56
【问题描述】:
我有一些门票的数据集,其中包含打开和关闭时间的datetime(如果仍然打开,则为 NULL)。
+------------------+------------------+
| opened_on | closed_on |
+------------------+------------------+
| 2019-09-01 17:00 | 2020-01-01 13:37 |
| 2020-04-14 11:00 | 2020-05-14 14:19 |
| 2020-03-09 10:00 | NULL |
+------------------+------------------+
我们希望生成一个数据表,显示按日期分组的按时间开放的票证总数。类似于以下内容:
+------------------+------------------+
| date | num_open |
+------------------+------------------+
| 2019-09-01 00:00 | 1 |
| 2020-09-02 00:00 | 1 |
| etc... | |
| 2020-01-01 00:00 | 0 |
| 2020-01-02 00:00 | 0 |
| etc... | |
| 2020-03-08 00:00 | 0 |
| 2020-03-09 00:00 | 1 |
| etc... | |
| 2020-04-14 00:00 | 2 |
+------------------+------------------+
请注意,我不确定在给定日期如何考虑 num_open - 应该从日期结束或开始的角度考虑,即如果一个在同一天,应该算0吗?
这是在 Postgres 中,所以我考虑过为此使用窗口函数,但尝试按日期截断会使它变得复杂。我尝试使用 generate_series 函数创建要加入的日期系列,但是当我使用聚合函数时,我“失去”了对单个票证日期时间的访问权限。
【问题讨论】:
标签: sql postgresql datetime count left-join