我的数据如下,如何找出记录之间的丢失事件。如果您看到以下有关up事件的数据丢失(Record4)
Datetime, Event_Type
2019-01-01 00:15:00, Down - Record1
2019-01-01 08:00:00, Up - Record2
2019-01-01 12:15:00, Down - Record3
2019-01-02 08:00:00, Down - Record5
2019-01-02 13:00:00, Up - Record6
我的结果应显示缺少连续事件的异常记录
如果datetime值是唯一的,类似这样的方法应该起作用
prev_ids-我们获得每条记录的先前日期时间,并计数先前的记录以获取行号
然后仅检查记录的event_type是否等于先前的event_type,然后在此处丢失
SELECT
IF(t.event_type = 'DOWN', 'UP', 'DOWN') as missing,
prev_ids.line_number
FROM my_table t
INNER JOIN
(SELECT
t.datetime,
MAX(t2.datetime) as previous_datetime,
COUNT(t2.datetime) + 1 as line_number
FROM my_table t LEFT JOIN my_table t2 ON t.datetime > t2.datetime
GROUP BY t.datetime
) prev_ids ON t.datetime = prev_ids.datetime
INNER JOIN my_table prev
ON prev.datetime = prev_ids.previous_datetime
WHERE prev.event_type = t.event_type