我正在使用MySQL并面临问题。我想根据每个ID计数类型的连续出现,并仅选择超过3次error-type的ID。
此外,根据上述结果,我想在结果中包括开始时间戳和结束时间戳。
我已经检查了其他帖子,但没有线索如何解决。
感谢任何建议。预先感谢您,欢迎任何建议。
我想显示的结果是屏幕截图。
ID A:连续4次错误,start_at是序列开始时的时间戳 ID C:连续3次错误,start_at是序列开始时的时间戳
分析解答
尝试
SELECT d.id, MIN(dt) AS start_dt, MAX(dt) AS end_dt
FROM
(
SELECT
d.*,
row_number() OVER(PARTITION BY id ORDER BY dt) - row_number() OVER(PARTITION BY id, type ORDER BY dt) AS grp
FROM DATA d
) d
WHERE d.type = 'Error'
GROUP BY d.id, d.grp HAVING( COUNT(d.id) >= 3 )
;