簡體   English   中英

給定帳戶創建和刪除時間戳時如何計算活動用戶

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

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