Коллеги, приветствую!
Есть БД с MYSQL со следующей таблицей
CREATE TABLE `table3` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`session_id` CHAR(50) NULL DEFAULT NULL COLLATE 'utf8_bin',
`iteration_id` VARCHAR(250) NULL DEFAULT NULL COLLATE 'utf8_bin',
`date_time` DATETIME NULL DEFAULT NULL,
`topic` VARCHAR(255) NULL DEFAULT NULL COLLATE 'utf8_bin',
`customer_id` CHAR(50) NULL DEFAULT NULL COLLATE 'utf8_bin'
)
В таблице по одному пользователю может быть неограниченное количество записей в рамках неограниченного количества сессий
Следующий код
SELECT
customer_id,
session_id,
date_time
FROM TABLE3
WHERE customer_id = '104232'
Возвращает
Пример вывода
"104232" "11705" "2019-10-11 16:47:19"
"104232" "11705" "2019-10-11 16:47:21"
"104232" "11705" "2019-10-11 16:47:58"
"104232" "11705" "2019-10-11 16:48:17"
"104232" "11705" "2019-10-11 16:48:36"
"104232" "11705" "2019-10-11 16:48:55"
"104232" "11717" "2019-10-11 22:48:49"
"104232" "11717" "2019-10-11 22:48:51"
"104232" "11717" "2019-10-11 22:49:39"
"104232" "11717" "2019-10-11 22:49:55"
"104232" "11717" "2019-10-11 22:50:17"
"104232" "11717" "2019-10-11 22:53:16"
"104232" "11717" "2019-10-11 22:54:48"
"104232" "11719" "2019-10-11 23:14:21"
"104232" "11719" "2019-10-11 23:14:23"
"104232" "11719" "2019-10-11 23:14:39"
"104232" "11719" "2019-10-11 23:14:52"
"104232" "11719" "2019-10-11 23:16:44"
"104232" "11719" "2019-10-11 23:17:25"
"104232" "11719" "2019-10-11 23:18:24"
Что требуется.
Вывести id клиента, id сессии, дату/время начала сессии, дату время завершения сессии с целью посчитать временной лаг между завершением одной и началом следующей сессии.
В MSSQL вот такой код приводит к успеху, а вот MySQL не могу побороть((
SELECT table_time.*,
lead (stop_session, 1, SYSDATE) over (PARTITION BY customer_id ORDER BY start_session) AS next_sess_time,
lead (stop_session, 1, SYSDATE) over (PARTITION BY customer_id ORDER BY start_session) - start_session AS lost_time
FROM
(
SELECT
customer_id,
session_id,
date_time,
MIN(date_time) AS start_session,
MAX(date_time) AS stop_session
FROM TABLE3
GROUP BY session_id AS table_time
)