以下のようなデータをTB
含む列を含むテーブルがあります。Time, User_id, State
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')
;
2秒ごとにUser_id
与えられるユニークなカウントをお願いします。State = 'DC'
結果は次のようになります。
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
しかし、これら2つを組み合わせて、希望する結果を得る方法がわかりません。
前もって感謝します。