簡體   English   中英

SQL 在不斷增長的時間范圍內計算不同的用戶

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

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