2013-02-27 62 views
0

我有一個表TB包含列Time, User_id, State,其數據如下。時間範圍內的唯一計數(打印0)

INSERT INTO TB 
    (Time, User_id, State) 
VALUES 
    (1, 1, 'VA'), 
    (1, 2, 'VA'), 
    (1, 2, 'DC'), 
    (2, 1, 'VA'), 
    (2, 2, 'MD'), 
    (3, 1, 'MD'), 
    (3, 112, 'MD'), 
    (3, 134, 'VA'), 
    (3, 111, 'MD'), 
    (4, 12, 'VA'), 
    (4, 22, 'MD') 
; 

我想給State = 'DC'每2秒的User_id獨特的計數。結果應該看起來像這樣:

NewTime | Count 
    1 | 1 
    2 | 0 

我得到了答案打印出0,當計數爲0使用

SELECT TIME, 
     SUM(CASE WHEN State = 'DC' THEN 1 ELSE 0 END) Count 
FROM TB 
GROUP BY Time 

並使用獲得的時間範圍內獨特的計數

SELECT 
    ((Time - 1)/2) + 1 as NewTime, 
    COUNT(DISTINCT User_id) as Count 
FROM ... 
GROUP BY ((Time - 1)/2) + 1 

但我不知道如何結合這兩個來獲得我想要的結果。

在此先感謝。

回答

1

您正在尋找這樣的:

SELECT 
    ((Time - 1)/2) + 1 as NewTime, 
    COUNT(DISTINCT case when state = 'DC' then User_id end) as Count 
FROM ... 
GROUP BY ((Time - 1)/2) + 1 

這是假設你有一些記錄(儘管不一定DC)每兩秒鐘。

+0

工作就像一個魅力。非常感謝! – Firyn 2013-02-27 19:18:16