SQL Server 查询两条 thisqty=1 记录之间的时间差 (忽略中间大于 1 的记录)
SQL Server 查询两条 'thisqty=1' 记录之间的时间差 (忽略中间大于 1 的记录)
本文介绍如何使用 SQL Server 查询一个 'user' 表中两条 'thisqty=1' 记录之间的时间差,并排除中间有 'thisqty' 大于 1 的记录。提供 SQL 查询语句并解释其工作原理。
假设有一个 'user_table' 表,包含以下字段:
- 'thisqty': 整型字段
- 'TIME_STAMP': 时间戳字段
要求:
查询取出 'thisqty=1' 的两条记录,计算这两条记录之间的时间差,如果两条记录中间有 'thisqty' 大于 1 的数据就忽略。
以下是 SQL 查询语句:
SELECT DATEDIFF(SECOND, t1.TIME_STAMP, t2.TIME_STAMP) AS time_diff
FROM user_table t1
JOIN user_table t2 ON t2.TIME_STAMP > t1.TIME_STAMP
WHERE t1.thisqty = 1 AND t2.thisqty = 1
AND NOT EXISTS (SELECT 1 FROM user_table t3 WHERE t3.TIME_STAMP > t1.TIME_STAMP AND t3.TIME_STAMP < t2.TIME_STAMP AND t3.thisqty > 1)
ORDER BY time_diff ASC
LIMIT 1;
解释:
- 使用 'JOIN' 将 'user_table' 自我连接,查询出所有满足条件的记录组合。
- 'WHERE' 子句过滤出 'thisqty=1' 的两条记录,同时使用 'NOT EXISTS' 过滤掉中间有 'thisqty' 大于 1 的数据记录组合。
- 使用 'DATEDIFF' 函数计算时间差,'ORDER BY ASC' 按照时间差升序排列,'LIMIT 1' 只取出第一条记录(即两条记录之间最短的时间差)。
希望本文能帮助您理解如何使用 SQL Server 查询两条记录之间的时间差,并排除中间有 'thisqty' 大于 1 的记录。
原文地址: https://www.cveoy.top/t/topic/oYoW 著作权归作者所有。请勿转载和采集!