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 myTable (
rowid int,
userid text,
webid text,
ts timestamp
);

INSERT INTO myTable
(`rowid`, `userid`, `webid`, `ts`)
VALUES ('1', 'A', '34', '2023-01-31 16:34:49.000'),
('2', 'A', '73', '2023-01-31 16:34:50.000'),
('3', 'A', '97', '2023-01-31 16:34:58.000'),
('4', 'A', '17', '2023-01-31 17:35:02.000'),
('5', 'A', '17', '2023-01-31 17:35:07.000'),
('6', 'A', '17', '2023-01-31 17:35:18.000'),
('7', 'A', '17', '2023-01-31 17:35:30.000'),
('8', 'A', '1', '2023-01-31 17:35:37.000'),
('9', 'A', '1', '2023-01-31 17:35:38.000'),
('10', 'A', '77', '2023-01-31 17:35:41.000'),
('11', 'A', '77', '2023-01-31 17:35:42.000'),
('12', 'A', '15', '2023-01-31 17:35:42.000'),
('13', 'A', '44', '2023-01-31 17:35:42.000'),
('14', 'A', '1', '2023-01-31 17:35:42.000'),
('15', 'A', '77', '2023-01-31 17:35:45.000'),
('16', 'A', '44', '2023-01-31 17:35:45.000'),
('17', 'A', '1', '2023-01-31 17:37:10.000'),
('18', 'A', '1', '2023-01-31 17:37:12.000'),
('19', 'A', '77', '2023-01-31 17:37:14.000'),
('20', 'A', '77', '2023-01-31 17:52:14.000'),
('21', 'A', '77', '2023-01-31 18:12:14.000'),
('22', 'A', '77', '2023-01-31 18:45:14.000'),
('23', 'A', '77', '2023-01-31 18:55:15.000'),
('1', 'B', '33', '2023-01-31 06:37:15.000'),
('2', 'B', '56', '2023-01-31 06:40:15.000')
;
Records: 25  Duplicates: 0  Warnings: 0
SELECT rowid, userid, webid, session_id, ts,
MIN(ts) OVER (PARTITION BY userid, session_id ORDER BY ts, rowid) first_ts
FROM (
SELECT *,
1 + COUNT(CASE WHEN webid <> prev_webid OR ts > prev_ts + INTERVAL '30' MINUTE THEN 1 END)
OVER (PARTITION BY userid ORDER BY ts, rowid) session_id
FROM (
SELECT *,
LAG(webid) OVER (PARTITION BY userid ORDER BY ts, rowid) prev_webid,
LAG(ts) OVER (PARTITION BY userid ORDER BY ts, rowid) prev_ts
FROM myTable
) t
) t
rowid userid webid session_id ts first_ts
1 A 34 1 2023-01-31 16:34:49 2023-01-31 16:34:49
2 A 73 2 2023-01-31 16:34:50 2023-01-31 16:34:50
3 A 97 3 2023-01-31 16:34:58 2023-01-31 16:34:58
4 A 17 4 2023-01-31 17:35:02 2023-01-31 17:35:02
5 A 17 4 2023-01-31 17:35:07 2023-01-31 17:35:02
6 A 17 4 2023-01-31 17:35:18 2023-01-31 17:35:02
7 A 17 4 2023-01-31 17:35:30 2023-01-31 17:35:02
8 A 1 5 2023-01-31 17:35:37 2023-01-31 17:35:37
9 A 1 5 2023-01-31 17:35:38 2023-01-31 17:35:37
10 A 77 6 2023-01-31 17:35:41 2023-01-31 17:35:41
11 A 77 6 2023-01-31 17:35:42 2023-01-31 17:35:41
12 A 15 7 2023-01-31 17:35:42 2023-01-31 17:35:42
13 A 44 8 2023-01-31 17:35:42 2023-01-31 17:35:42
14 A 1 9 2023-01-31 17:35:42 2023-01-31 17:35:42
15 A 77 10 2023-01-31 17:35:45 2023-01-31 17:35:45
16 A 44 11 2023-01-31 17:35:45 2023-01-31 17:35:45
17 A 1 12 2023-01-31 17:37:10 2023-01-31 17:37:10
18 A 1 12 2023-01-31 17:37:12 2023-01-31 17:37:10
19 A 77 13 2023-01-31 17:37:14 2023-01-31 17:37:14
20 A 77 13 2023-01-31 17:52:14 2023-01-31 17:37:14
21 A 77 13 2023-01-31 18:12:14 2023-01-31 17:37:14
22 A 77 14 2023-01-31 18:45:14 2023-01-31 18:45:14
23 A 77 14 2023-01-31 18:55:15 2023-01-31 18:45:14
1 B 33 1 2023-01-31 06:37:15 2023-01-31 06:37:15
2 B 56 2 2023-01-31 06:40:15 2023-01-31 06:40:15