我正在努力编写查询而不是每个月根据两个日期字段交互的条件对用户进行计数。 首先,我有一个唯一标识用户的字段,第二个字段用于注册用户订阅的日期,第三个字段用于注册取消订阅的日期。
user, subscribed, unsubscribed
1234, 2017-01-01, null
2345, 2017-01-01, 2017-12-01
3456, 2017-03-01, 2017-05-20
我希望看到的表是:
date, user_count
2017-01-01, 2
2017-02-01, 2
2017-03-01, 3
2017-04-01, 3
2017-05-01, 3
2017-06-01, 2
etc...
我知道我必须包含一个where条件,其中subscribe必须大于unsubscribed。在哪里订阅>退订。 Null只显示用户没有取消订阅的空值。我只是不确定如何在每年每个月满足条件时计算用户数。我是否需要将我的表加入日期月系列?
答案 0 :(得分:0)
是的,您需要每月一次的系列 - 请参阅此post
然后,您可以将表连接到子查询,该子查询返回具有以下条件的不同月份:
WHERE first_date_of_month BETWEEN date_trunc('month',subscribed) AND date_trunc('month',coalesce(unsubscribed,getdate())
coalesce
函数将用第二个参数(当前日期)替换第一个参数中的NULL值