[英]SQL Logic for calculating the unique members count for rolling 3 months by each month
我正在處理一個請求,計算以下日期桶的表中唯一注冊成員的數量(基於 registration_date_utc - 時間戳),
1 月 1 日至 3 月 31 日:唯一注冊會員數
2 月 1 日至 4 月 30 日:唯一注冊會員數
3 月 1 日至 5 月 31 日:唯一注冊會員數
4 月 1 日至 6 月 30 日:唯一注冊會員數
5 月 1 日至 7 月 31 日:唯一注冊會員數
6 月 1 日至 8 月 31 日:唯一注冊會員數
7 月 1 日至 9 月 30 日:唯一注冊會員數
8 月 1 日至 10 月 31 日:唯一注冊會員數
9 月 1 日至 11 月 30 日:唯一注冊會員數
10 月 1 日至 12 月 31 日:唯一注冊會員數
下面是我的 Snowflake 查詢,它有效但不返回任何結果,
select
DATE_TRUNC('month',t.registration_date_utc) as "MONTH_START",
count(distinct t.MEMBER_ID)
FROM
(
select
member_id,
registration_date_utc
from table a
) as t
WHERE TO_DATE(t.registration_date_utc) BETWEEN DATEADD(month,'3',t.registration_date_utc) AND t.registration_date_utc
group by 1
order by 1;
BETWEEN START_DATE 和 END_DATE 您的日期條件將始終為假
select
DATE_TRUNC('month',t.registration_date_utc) as "MONTH_START",
count(distinct t.MEMBER_ID)
FROM
(
select
member_id,
registration_date_utc
from table a
) as t
--WHERE TO_DATE(t.registration_date_utc) BETWEEN DATEADD(month,'3',t.registration_date_utc) AND t.registration_date_utc
WHERE TO_DATE(t.registration_date_utc) BETWEEN t.registration_date_utc AND DATEADD(month,'3',t.registration_date_utc)
group by 1
order by 1;
您想計算三個月內的唯一身份訪問者。 一種方法是擴展表以進行計數:
SELECT DATE_TRUNC('month', t.registration_date_utc) + v.offset * INTERVAL '1 month') as MONTH_START,
COUNT(DISTINCT t.MEMBER_ID)
FROM t CROSS JOIN
(VALUES (0), (1), (2)) v(offset)
GROUP BY 1
ORDER BY 1;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.