【发布时间】:2020-08-06 20:23:14
【问题描述】:
我有一些 SaaS 用户数据,如下所示:
start_month end_month User_Id
2019-10 2019-10 1
2019-10 2019-11 2
2019-10 2019-12 3
2019-10 2019-12 4
2019-11 2019-11 5
2019-11 2019-12 6
2019-11 2019-12 7
2019-11 2020-01 8
2019-12 2019-12 9
2019-12 2020-01 10
2019-12 NULL 11
2019-12 2020-02 12
如您所见,数据包含订阅开始日期和订阅结束日期。
start_month 和 end_month 是从开始日期创建的字符串 TO_CHAR(date_trunc('month', start_date), 'yyyy-MM') AS start_month
如果订阅仍然有效,end_month 可以为空。
这是一个 postgresql 数据库。
使用这些数据,我需要创建一个同类群组报告,其中应该显示每个月有多少人开始订阅,以及从该同类群组中,有多少人在下个月结束了订阅。上述数据中,2019-10 年有 4 名用户入职。 1 个在同一个月结束 (0),1 个在第 1 个月结束,2 个在第 2 个月结束。同样,我们应该为其他开始月份的同类群组获取。
很抱歉,我完全不知道如何才能得出这份报告。我搜索了互联网,但找不到任何相关答案,其中仅使用开始和结束日期创建群组。请帮忙。
【问题讨论】:
-
第一:使用正确的数据类型(日期),这样比较容易。第二:使用 +inf 而不是 NULL 来表示一个永久的间隔。第三:你需要一个日历表。
标签: sql postgresql