2015-06-19 57 views
0

嗨,我現在所面臨的問題而實施的查詢來計算不同時間跨度的登錄數(3個月,6個月,1年等)無法獲取登錄不同的時間計數跨越

我有兩個表:

表X

MAIN LASTLOGIN 

數據表Y

MAIN USERID LASTLOGIN 

我想回到L的數量最近3個月,最近6個月,最近1年的用戶ID。

結果表

USERID LOGINCOUNT(3MONTHS) LOGINCOUNT(6MONTHS) LOGINCOUNT(1YEAR) 

我能夠成功地實現以下查詢這給登錄計數僅過去3個月。如何獲得6個月和1年的其他兩列。

我的查詢是:

select Y.userid, count(x.lastlogin) AS COUNT_3MONTHS 
    from 
    X 
    inner join 
    Y 
    on X.MAIN = Y.MAIN 
    where X.LASTLOGIN > current_date - interval '90' day 
    group by 1; 

回答

0

使用條件彙總:

select Y.userid, 
     sum(X.LASTLOGIN > current_date - interval 3 month) as COUNT_3MONTHS, 
     sum(X.LASTLOGIN > current_date - interval 6 month) as COUNT_6MONTHS, 
     sum(X.LASTLOGIN > current_date - interval 1 year) as COUNT_1YEAR 
from X inner join 
    Y on 
    X.MAIN = Y.MAIN 
group by userid; 
+0

爲此,我猜那裏條件不需要存在。正確? – Austin

+0

是的,沒有必要有條件 – Yashar

+0

@奧斯汀。 。 。完全正確。 –