假設我有我的table
這樣的:SQL(Vertica的) - 計算誰返回到應用程序的用戶數量至少在X天在過去7天
uid day_used_app
--- -------------
1 2012-04-28
1 2012-04-29
1 2012-04-30
2 2012-04-29
2 2012-04-30
2 2012-05-01
2 2012-05-21
2 2012-05-22
假設我想誰歸還唯一用戶數到過去7天內至少2天不同的應用程序(從2012-05-03
)。
因此,作爲一個例子來檢索誰使用,在過去7天至少2個不同天的應用程序的用戶數量:
select count(distinct case when num_different_days_on_app >= 2
then uid else null end) as users_return_2_or_more_days
from (
select uid,
count(distinct day_used_app) as num_different_days_on_app
from table
where day_used_app between current_date() - 7 and current_date()
group by 1
)
這給了我:
users_return_2_or_more_days
---------------------------
2
的我的問題是:
如果我想每天都這樣做,直到現在這樣我的表看起來像這樣,第二個字段等於返回2或mo的唯一用戶的數量在第一個字段的日期之前的一週內重新設置不同的日期。
date users_return_2_or_more_days
-------- ---------------------------
2012-04-28 2
2012-04-29 2
2012-04-30 3
2012-05-01 4
2012-05-02 4
2012-05-03 3
我很感謝您的回答。不過,我認爲你的查詢在做的是統計當天訪問兩次或更多次的唯一用戶的數量,而我的結果如下:給定日期X,使用該應用程序的用戶的唯一數量是多少在日期(X) - 7和日期(X)之間的兩個或多個不同日期?如果我錯了,請糾正我的錯誤! =] – boldbrandywine
@boldbrandywine我更新了我的答案。我想你可以使用相關子查詢來計算7天窗口統計。 –
任何機會,這可以寫沒有相關的子查詢? (Vertica不支持它們)=] – boldbrandywine