当前第2页 返回上一页
打印行号的SQL语句:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | SELECT
(@rownum := @rownum + 1) AS rownum,
tab.business_id,
tab.device_mac,
tab.capture_time
FROM
captainad_driver_gps_position tab,
(SELECT @rownum := 0) r -- 声明变量
WHERE
1 = 1
AND DATE_FORMAT(
tab.capture_time,
'%Y-%m-%d'
) = '2019-06-28'
ORDER BY
tab.capture_time
|
基于此,我们将目标SQL给写出来,这里我根据我们的实际业务将语句稍微做了整理,脚本大致如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 | SELECT
t.business_id,
t.device_mac,
t.capture_time,
t.tdiff
FROM
(
SELECT
r1.business_id,
r1.device_mac,
r1.capture_time,
TIMEDIFF(
r2.capture_time,
r1.capture_time
) AS 'tdiff'
FROM
(
SELECT
(@rownum := @rownum + 1) AS rownum,
tab.business_id,
tab.device_mac,
tab.capture_time
FROM
captainad_driver_gps_position tab,
(SELECT @rownum := 0) r
WHERE
1 = 1
AND DATE_FORMAT(
tab.capture_time,
'%Y-%m-%d'
) = '2019-06-28'
ORDER BY
tab.capture_time
) r1
LEFT JOIN (
SELECT
(@INDEX := @INDEX + 1) AS rownum,
tab.business_id,
tab.device_mac,
tab.capture_time
FROM
captainad_driver_gps_position tab,
(SELECT @INDEX := 0) r
WHERE
1 = 1
AND DATE_FORMAT(
tab.capture_time,
'%Y-%m-%d'
) = '2019-06-28'
ORDER BY
tab.capture_time
) r2 ON r1.business_id = r2.business_id
AND r1.device_mac = r2.device_mac
AND r1.rownum = r2.rownum - 1
) t
WHERE
t.tdiff > '00:00:15'
|
在上面的代码中,我们通过r1.rownum = r2.rownum - 1
来判断两条记录是否是前后行,然后再使用TIMEDIFF
函数来计算时间差,到此,我们的目标就实现了。
想了解更多编程学习,敬请关注php培训栏目!
以上就是MySQL如何计算相邻两行某列差值的详细内容,更多文章请关注木庄网络博客!
返回前面的内容
相关阅读 >>
mysql单表数据不要超过500万行:是经验数值,还是黄金铁律?
mysql多维数据仓库指南是什么
mysql_实现组内排序-oracle中的rank()函数的功能
关于mysql的基础知识详解
mysql建表语句是什么
mysql数据库表如何导出到excel
mysql基础架构教程之查询语句执行的流程详解
mysql8.0.11安装配置方法图文教程 mysql8.0新密码认证方式
mysql存储引擎详解
mysql engine表示什么
更多相关阅读请进入《mysql》频道 >>
机械工业出版社
本书主要讲述了数据模型、基于对象的数据库和XML、数据存储和查询、事务管理、体系结构等方面的内容。
转载请注明出处:木庄网络博客 » MySQL如何计算相邻两行某列差值