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

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注