笔记 · · 260 阅读

mysql计算相邻两行时间或数字差值

mysql计算相邻两行时间或数字差值

1.找出某个机柜某个仓门上报时间差是否高于正常值

SELECT
cab_serial,
    b.id,
    b.curr,
    b.pre,
    ( b.curr - b.pre ) AS diff
FROM
    (
    SELECT
        cab_serial,
        a.`id` AS id,
        a.created_at AS curr,
        @a.created_at AS pre,
        @a.created_at := a.created_at
    FROM
        表名 a,(
        SELECT
            @a.created_at := 0
        ) r
        WHERE cab_serial = '机柜编号' AND door_num = 1
    )b HAVING diff > 180
~~2.查找整个表中每个用户的相册创建时间差值~~ (这段代码测试数据后与实际结果不符)
SELECT
    r1.user_id,
    r1.curr,
    r2.pre,
    ( r1.curr - r2.pre ) AS diff
FROM
    (
    SELECT
        id,
        ( @rownum := @rownum + 1 ) AS rownum,
        info.user_id,
        info.created_at curr
    FROM
        表名 info,
        ( SELECT @rownum := 0 ) r
    WHERE
        info.created_at IS NOT NULL
    ORDER BY
        info.user_id
    ) r1
    LEFT JOIN (
    SELECT
        id,
        ( @INDEX := @INDEX + 1 ) AS rownum,
        info.user_id,
        info.created_at pre
    FROM
        表名 info,
        ( SELECT @INDEX := 0 ) r
    WHERE
        info.created_at IS NOT NULL
    ORDER BY
        info.user_id
    ) r2 ON r1.user_id = r2.user_id
    AND r1.rownum = r2.rownum - 1
ORDER BY
    r1.rownum DESC
0 评论

评论

还没有评论,来说两句吧