我有下表。
表1:
id_user | action | time
--------+--------+----------------------
1 | 2 | '2009-05-18 11:45:42'
1 | 2 | '2009-05-18 11:45:45'
1 | 3 | '2009-05-18 11:45:50'
1 | 2 | '2009-05-18 11:46:50'
我想获得结果,其中该列timediff
包含timediff与上一行以秒为单位。
表2
id_user | action | timediff
--------+--------+----------
1 | 2 | 3
1 | 2 | 5
1 | 3 | 60
我尝试了此查询,但是成功了:
SELECT
id_user,action,
TIMESTAMPDIFF(SECOND,LEAD(time),time) OVER (PARTITION BY id_user, ORDER BY time) AS timediff
FROM table1
...但是会引发错误。:/
我看过其他的答案,但我没有看到一个使用LEAD
或LAG
与TIMESTAMPDIFF
同时进行。
提前致谢。
您的语法错误,必须使用以下命令:
SELECT id_user,
action,
TIMESTAMPDIFF(
SECOND,
time,
LEAD(time) OVER (PARTITION BY id_user ORDER BY time)
) AS timediff
FROM table1
该TIMESTAMPDIFF()
函数的第2和3D参数是日期时间表达式和第二从3D中减去。
参见演示。
结果:
| id_user | action | timediff |
| ------- | ------ | -------- |
| 1 | 2 | 3 |
| 1 | 2 | 5 |
| 1 | 3 | 60 |
| 1 | 2 | |
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句