我正在使用MySQL并面临问题。我想根据每个ID计数类型的连续出现,并仅选择超过3次error-type的ID。

此外,根据上述结果,我想在结果中包括开始时间戳和结束时间戳。

我已经检查了其他帖子,但没有线索如何解决。

感谢任何建议。预先感谢您,欢迎任何建议。

带有动作类型的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 )
;