add batch remove batch split batch comment selection show hidden batches hide batch highlight batch
db<>fiddle
donate feedback about
By using db<>fiddle, you agree to license everything you submit by Creative Commons CC0.
CREATE TABLE eventLog
(
id integer primary key autoincrement,
type varchar(20),
details varchar(30)
);


INSERT INTO eventLog
(type, details)
VALUES
('power', 'power on');


INSERT INTO eventLog
(type, details)
VALUES
('cleaner', 'cleaning started');


INSERT INTO eventLog
(type, details)
VALUES
('cleaner', 'cleaning finished');


INSERT INTO eventLog
(type, details)
VALUES
('power', 'power off');


INSERT INTO eventLog
(type, details)
VALUES
('power', 'power on');


INSERT INTO eventLog
(type, details)
VALUES
('cleaner', 'cleaning started');


INSERT INTO eventLog
(type, details)
VALUES
('power', 'power off');


select *
from (
select id, type, details
, lead(id) over (order by id) as lead_id
, lead(details) over (order by id) as lead_details
from eventLog
) as t
where t.details = 'power on' and t.lead_details = 'cleaning started'
;

id type details lead_id lead_details
1 power power on 2 cleaning started
5 power power on 6 cleaning started
create table consecutive_detail_pairs
( fst varchar(30) not null
, snd varchar(30) not null
, primary key (fst, snd)
);

insert into consecutive_detail_pairs
(fst, snd)
values ('power on', 'cleaning started');

select *
from (
select id, type, details
, lead(id) over (order by id) as lead_id
, lead(details) over (order by id) as lead_details
from eventLog
) as t
join consecutive_detail_pairs c
on t.details = c.fst and t.lead_details = c.snd
;
id type details lead_id lead_details fst snd
1 power power on 2 cleaning started power on cleaning started
5 power power on 6 cleaning started power on cleaning started
select details, lead_details
from (
select id, type, details
, lead(id) over (order by id) as lead_id
, lead(details) over (order by id) as lead_details
from eventLog
)
group by details, lead_details
having count(1) > 1;

details lead_details
power on cleaning started
select id, type, details, lead_id, lead_details, lead2_details
from (
select id, type, details, lead_id, lead_details, lead2_details
, count(1) over (partition by details, lead_details) cnt
, count(1) over (partition by details, lead_details, lead2_details) cnt2
from (
select id, type, details
, lead(id) over (order by id) as lead_id
, lead(details) over (order by id) as lead_details
, lead(details,2) over (order by id) as lead2_details
from eventLog
) as t
) as tt
where cnt > 1
or cnt2 > 1;
id type details lead_id lead_details lead2_details
1 power power on 2 cleaning started cleaning finished
5 power power on 6 cleaning started power off