[英]SQL counting distinct users over a growing timeframe
我認為我沒有正確命名這個,但本質上我希望能夠計算不同的用戶,但隨着時間的推移考慮那些以前的不同用戶。 例如,假設我們有一個用戶購買的數據集:
Date | User
-----------------
2/3/22 | A
2/4/22 | B
2/22/22 | C
3/2/22 | A
3/4/22 | D
3/15/22 | A
4/30/22 | B
一般來說,如果我按照正常情況計算按月分組的差異,我們會得到:
Date | Count
-----------------
2/1/22 | 3
3/1/22 | 2
4/1/22 | 1
但我真正想看到的是不同用戶的總數在一段時間內如何增加。
Date | Count
-----------------
2/1/22 | 3
3/1/22 | 4
4/1/22 | 4
因此,第一個月將是 3 個不同的用戶。 考慮到不同用戶的總數增加了“D”,第二個月為 4,而“A”沒有被計算在內,因為它在上個月已經被識別為獨立用戶。 第三個月仍然是 4,因為當月沒有新的不同用戶執行操作。
任何幫助將不勝感激(即使它只是一個更好的標題,以便更恰當地接觸更多人哈哈)
這是一個基於Postgres中運行 sum 的解決方案,應該可以很好地轉換為Vertica 。
select date_trunc('month', "Date") as "Date"
,sum(count(case rn when 1 then 1 end)) over (order by date_trunc('month', "Date")) as "Count"
from (
select "Date"
,"User"
,row_number() over(partition by "User" order by "Date") as rn
from t
) t
group by date_trunc('month', "Date")
order by "Date"
日期 | 數數 |
---|---|
2022-02-01 00:00:00 | 3 |
2022-03-01 00:00:00 | 4 |
2022-04-01 00:00:00 | 4 |
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.