可以使用 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 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录