gpt4 book ai didi

sql-server - 计算两行之间的时间差

转载 作者:太空狗 更新时间:2023-10-30 01:37:58 26 4
gpt4 key购买 nike

我有一个包含以下内容的表格:

DataDate                 Value
2010-03-01 08:31:32.000 100
2010-03-01 08:31:40.000 110
2010-03-01 08:31:42.000 95
2010-03-01 08:31:45.000 101
. .
. .
. .

我需要将值列乘以当前行和前一行之间的时间差,然后将这一天的结果相加。

我目前将数据设置为每 10 秒发送一次,这使得查询中的转换变得简单:

SELECT Sum((Value/6) FROM History WHERE DataDate BETWEEN @startDate and @endDate

@startDate 和 @endDate 是今天的日期 00:00:00 和 11:59:59。

在我将数据设置为每 10 秒收集一次之前,只要值发生变化,它就会收集一次。时间上没有任何重复条目,最小时间差为1秒。

当我不知道读数之间的时间间隔时,如何设置查询以获取行之间耗时?

我正在使用 SQL Server 2005。

最佳答案

WITH    rows AS
(
SELECT *, ROW_NUMBER() OVER (ORDER BY DataDate) AS rn
FROM mytable
)
SELECT DATEDIFF(second, mc.DataDate, mp.DataDate)
FROM rows mc
JOIN rows mp
ON mc.rn = mp.rn - 1

在 SQL Server 2012+ 中:

SELECT  DATEDIFF(second, pDataDate, dataDate)
FROM (
SELECT *,
LAG(dataDate) OVER (ORDER BY dataDate) pDataDate
FROM rows
) q
WHERE pDataDate IS NOT NULL

关于sql-server - 计算两行之间的时间差,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2357515/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com