MySQL вычисляет разницу между датой и непоследовательными датами - PullRequest
0 голосов
/ 14 мая 2018

У меня есть эта таблица в MySQL, (которая на данный момент будет показывать поддельные столбцы и данные из-за юридических вопросов):

date       user_id   timestamp  
2018-04-27  181 2018-04-27 08:28:33
2018-04-28  181 2018-04-28 03:01:22
2018-05-03  181 2018-05-03 03:04:48
2018-05-04  181 2018-05-04 03:38:12
2018-05-07  181 2018-05-07 05:03:57
2018-05-08  181 2018-05-08 03:02:43
2018-05-09  181 2018-05-09 00:19:39
2018-05-10  181 2018-05-10 00:12:45
2018-05-08  183 2018-05-08 01:46:18
2018-05-09  183 2018-05-09 01:54:40
2018-05-01  184 2018-05-01 00:15:25
2018-05-03  184 2018-05-03 02:21:48
2018-05-08  184 2018-05-08 02:40:42
2018-05-09  184 2018-05-09 01:45:29

И мне понадобится четвертый столбец, чтобы вычислить разницу между первым днем ​​и всеми остальными для того же идентификатора пользователя.

Поэтому для первого пользователя мне понадобится 4-й столбец, который будет отображаться в первой строке '0', а затем 1 и затем 7, это будет разница между 2018-04-27 и 2018-05-03 и т. Д., Сбрасывая с 0 при изменении user_id.

Я использую MySQl версии 5.6.34.

Может ли кто-нибудь помочь мне?

Спасибо, George

1 Ответ

0 голосов
/ 14 мая 2018

Один из вариантов - присоединиться к подзапросу, который находит первую дату для каждого пользователя, а затем вычислить разницу в дате для каждой строки:

SELECT
    t1.date,
    t1.user_id,
    t1.timestamp,
    DATEDIFF(t1.date, t2.first_date) AS diff
FROM yourTable t1
INNER JOIN
(
    SELECT user_id, MIN(date) AS first_date
    FROM yourTable
    GROUP BY user_id
) t2
    ON t1.user_id = t2.user_id
ORDER BY
    t1.user_id,
    t1.date;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...