SQL Server 查询连续两条 thisqty=1 的记录并计算时间差
可以使用 LAG 函数和 WHERE 子句实现:
SELECT
TIME_STAMP,
thisqty,
DATEDIFF(SECOND, LAG(TIME_STAMP) OVER (ORDER BY TIME_STAMP), TIME_STAMP) AS time_diff
FROM
user
WHERE
thisqty = 1 AND LAG(thisqty) OVER (ORDER BY TIME_STAMP) = 1
ORDER BY
TIME_STAMP
该查询语句使用了 LAG 函数来获取前一条记录的 thisqty 值。WHERE 子句筛选出 thisqty 等于 1 且前一条记录的 thisqty 也等于 1 的记录,并使用 DATEDIFF 函数计算两条记录之间的时间差。最后,使用 ORDER BY 子句按时间排序结果。
解释:
LAG(thisqty) OVER (ORDER BY TIME_STAMP): 获取当前记录之前的一条记录的thisqty值,并根据TIME_STAMP列排序。DATEDIFF(SECOND, LAG(TIME_STAMP) OVER (ORDER BY TIME_STAMP), TIME_STAMP): 计算当前记录的时间戳与前一条记录的时间戳之间的秒数差。WHERE thisqty = 1 AND LAG(thisqty) OVER (ORDER BY TIME_STAMP) = 1: 筛选出连续两条thisqty等于 1 的记录。ORDER BY TIME_STAMP: 按时间戳排序结果。
原文地址: https://www.cveoy.top/t/topic/oXQd 著作权归作者所有。请勿转载和采集!