簡體   English   中英

用於計算每月滾動 3 個月的唯一成員數的 SQL 邏輯

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM