计算日期和非连续日期之间的差异

5f0d552i  于 2021-06-21  发布在  Mysql
关注(0)|答案(1)|浏览(403)

我在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列计算同一用户id的第一天和所有其他日期之间的差异。
因此,对于第一个用户,我需要第4列显示在第一行“0”,然后是1,然后是7,这是2018-04-27和2018-05-03之间的差异,因此,当用户id更改时,用0重置。
我使用的是MySQL5.6.34版本。
有人能帮我吗?
谢谢,乔治

bwitn5fc

bwitn5fc1#

一种选择是联接到一个子查询,该子查询查找每个用户的第一个日期,然后计算每行的日期差异:

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;

相关问题