我有一个表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
但我不确定如何将这两者结合起来得到我想要的结果。
提前致谢。
答案 0 :(得分: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)。