[英]How to count active users when given account creation and deletion timestamps
如果我有包含用戶信息的行,包括兩個時間戳值包含“已創建”和“已刪除”數據(如果帳戶處於活動狀態,則“已刪除”是 null),有沒有辦法計算給定日期的活躍用戶數(即介於這兩個值)?
例子:
ID | 創建 | 已刪除 |
---|---|---|
01 | 2022-05-01 | 2022-08-01 |
02 | 2022-06-01 | 2022-08-13 |
03 | 2022-07-01 | NULL |
我想要返回的內容:
日期 | active_user_count |
---|---|
2022-05-01 | 1 |
2022-06-01 | 2 |
2022-07-01 | 3 |
2022-08-01 | 2 |
2022-08-25 | 1 |
主要思想是將創建計數為+1,刪除計數為-1。
在您的數據樣本中,每個日期僅出現一次,但在現實生活場景中,我們可以預期在一天內有多個條目(創建/刪除)。 因此,我們首先需要計算條目的每日總和,然后計算運行總計。
select dt
,sum(sum(delta)) over(order by dt) as active_user_count
from
( select id, created as dt, 1 as delta from t
union all select id, deleted, -1 from t where deleted is not null
) t
group by dt
dt | active_user_count |
---|---|
2022-05-01 00:00:00 | 1 |
2022-06-01 00:00:00 | 2 |
2022-07-01 00:00:00 | 3 |
2022-08-01 00:00:00 | 2 |
2022-08-13 00:00:00 | 1 |
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.