MySQL如何计算相邻两行某列差值


当前第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》频道 >>


数据库系统概念 第6版
书籍

数据库系统概念 第6版

机械工业出版社

本书主要讲述了数据模型、基于对象的数据库和XML、数据存储和查询、事务管理、体系结构等方面的内容。



打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...