mysql - SQL计算一行和下一行之间的时间
问题描述
我有一张桌子点击
click_id int
created datetime
示例数据
1 2021-03-01 12:15:17
2 2021-03-01 12:15:21
3 2021-03-01 12:17:21
4 2021-03-01 13:17:59
我想选择所有点击,包括它与之后最快点击之间的时间差(以秒为单位)
需要的结果:
1 - 2021-03-01 12:15:17 - 4
2 - 2021-03-01 12:15:21 - 120
3 - 2021-03-01 12:17:21 - 3602
4 - 2021-03-01 13:17:23 - null
这可以使用 MySQL 实现吗?
解决方案
在 MySQL 8+ 上,我们可以使用LEAD
with TIMESTAMPDIFF
:
SELECT
click_id,
created,
TIMESTAMPDIFF(SECOND, created, LEAD(created) OVER (ORDER BY created)) AS diff_sec
FROM yourTable
ORDER BY created;
推荐阅读
- android - UnsatisfiedLinkError OkHttpClient API 19
- reactjs - 在我的 React 组件 TextField 中,为什么即使我更改了值也始终保持不变?
- mysql - laravel 迁移增量列问题
- c++ - 通过规范化 // 函数来调整数组
- unity3d - 如何在某个 y 级别统一、2d、统一 5、linux 重生精灵
- c++ - Vulkan 设置 - VS 代码、MSVC
- pine-script - 无法将 series[integer] 传递给常见的 Pinescript 命令
- reactjs - 在没有 create-react-app 的情况下使用带有 react 的 babel 和 web pack
- ios - 将表格视图单元格从一个表格视图移动到新的表格视图
- java - 随机不打印正确的最大值和最小值