我正在寻求编写一个查询,使我能够捕获过去一年(按天)的活跃订阅者和订阅数量。例如,下面的查询将告诉我们 2013 年 6 月 2 日至 2014 年 6 月 1 日期间任意时间的唯一订阅者和活跃订阅的数量。
SELECT count(distinct(user_id)) as subscribers,
count(distinct(subscription_id)) as subscriptions
FROM dataset
WHERE (start_date <= to_date('01JUN2014:23:59:59','DDMONYYYY:HH24:MI:SS') and
end_date >= to_date('02JUN2013:00:00:00','DDMONYYYY:HH24:MI:SS')) and
payment_amt > 0;
话虽如此,我正在寻求一个查询,允许我同时捕获所有活跃订阅者和过去 12 个月内活跃的活跃订阅(过去 365 天按天)。我正在寻找的最终数据集看起来像这样(365 行;3 列):
Ref_Date Subscribers Subscriptions
6/1/2014 100 150
6/2/2014 101 153
… … …
5/30/2015 106 160
5/31/2015 104 155
此外,对于本文中的查询,上表中“Ref_Date”的值为“6/1/2014”。我只想通过一次数据提取对所有 365 个“Ref_Date”执行此操作。 有人可以提供任何帮助吗?非常感谢!
最佳答案
您需要创建一个日期表并将其连接到数据。下面的示例使用来自同一数据集的派生表来生成日期列表。
查询:
SELECT Ref_date
,count(DISTINCT (user_id)) AS subscribers
,count(DISTINCT (subscription_id)) AS subscriptions
FROM (
SELECT DISTINCT start_date AS ref_date
FROM dataset
WHERE start_date BETWEEN DATEADD(YYYY,-1,CURRENT_DATE) and CURRENT_DATE
) dateslist
INNER JOIN dataset ON start_date < DATEADD(YYYY, 1, ref_date)
AND end_date >= ref_date
关于sql - 查询过去一年的活跃订阅者数和订阅数(按天),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31007255/