Мне нужно получить продолжительность посещений пользователей за каждый день в MySQL.У меня есть таблица как:
user_id,date,time_start, time_end
1, 2018-09-01, 09:00:00, 12:30:00
2, 2018-09-01, 13:00:00, 15:10:00
1, 2018-09-03, 09:30:00, 12:30:00
2, 2018-09-03, 13:00:00, 15:10:00
и мне нужно получить:
user_id,2018-09-01_duration,2018-09-03_duration
1,03:30:00,03:00:00
2,02:10:00,02:10:00
Поэтому столбцы должны быть динамическими, так как некоторые даты могут быть пропущены (2018-09-02).Можно ли обойтись одним запросом без явных объединений на каждый день (поскольку некоторые дни могут быть нулевыми)?
Обновление # 1
Да, я могу генерировать столбцына стороне приложения, но у меня все еще есть ужасный запрос вроде
SELECT user_id, d1.dt AS "2018-08-01_duration", d2.dt AS "2018-08-03_duration"...
FROM (SELECT
user_id,
time_format(TIMEDIFF(TIMEDIFF(time_out,time_in),time_norm),"%H:%i") AS dt
FROM visits
WHERE date = "2018-09-01") d1
LEFT JOIN(
SELECT
user_id,
time_format(TIMEDIFF(TIMEDIFF(time_out,time_in),time_norm),"%H:%i") AS dt
FROM visits
WHERE date = "2018-09-03") d3
ON users.id = d3.user_id...
Обновление № 2
Да, данные вроде
select user_id, date, SEC_TO_TIME(SUM(TIME_TO_SEC(time_out) - TIME_TO_SEC(time_in))) as total
from visits
group by user_id, date;
верны, но в этом случае данные для пользователей идут последовательно.И я надеюсь, что есть способ, когда у меня есть строки с пользователями и столбцы с датами (как в примере выше)