@neonox

Как правильно составить SQL-запрос?

Коллеги, приветствую!
Есть БД с 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
)
  • Вопрос задан
  • 119 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
SaveTime Москва
от 160 000 руб.
OFD.ru Москва
от 140 000 до 170 000 руб.
08 дек. 2019, в 17:03
25000 руб./за проект
08 дек. 2019, в 16:51
500 руб./за проект