Select CreationUtcTime 的总和,在 sql 查询中速度从 0 开始变化的平均时间和计数

Select sum of CreationUtcTime , Avg time and count between speed change from 0 in sql query

在下面的数据中,我想通过计算数据变化时的时间差来获得 CreationUTC 时间总和,并在速度数据从 0 开始变化时对所有时间差求和,并采用该变化作为从空闲到 运行 状态的事件。我想计算这组数据的所有空闲时间总和,平均空闲时间和空闲时间计数。

例如:- 就像第 4 行中的数据从 0 到 85 发生变化一样,我需要第 1 行和第 5 秒的第一组时间差从第 5 到第 11,最后一组将为 3。因此计数变为 3 avg 将是时差之和乘以 3.

我希望它作为 sql 查询执行,稍后我将在我的 .net 代码中将其转换为 .net linq 查询。

请忽略格式化,因为我是堆栈溢出方面的新手。

CreationUtcTime Speed AssetId
2022-03-28T23:59:51 0 7556d50c-95e5-4cd5-a31d-b4d6c6ab1fb1
2022-03-28T23:58:51 0 7556d50c-95e5-4cd5-a31d-b4d6c6ab1fb1
2022-03-28T23:57:51 0 7556d50c-95e5-4cd5-a31d-b4d6c6ab1fb1
2022-03-28T23:56:51 0 7556d50c-95e5-4cd5-a31d-b4d6c6ab1fb1
2022-03-28T23:55:52 85 7556d50c-95e5-4cd5-a31d-b4d6c6ab1fb1
2022-03-28T23:54:52 0 7556d50c-95e5-4cd5-a31d-b4d6c6ab1fb1
2022-03-28T23:53:52 0 7556d50c-95e5-4cd5-a31d-b4d6c6ab1fb1
2022-03-28T23:52:51 0 7556d50c-95e5-4cd5-a31d-b4d6c6ab1fb1
2022-03-28T23:51:51 0 7556d50c-95e5-4cd5-a31d-b4d6c6ab1fb1
2022-03-28T23:50:52 0 7556d50c-95e5-4cd5-a31d-b4d6c6ab1fb1
2022-03-28T23:49:52 99 7556d50c-95e5-4cd5-a31d-b4d6c6ab1fb1
2022-03-28T23:48:51 0 7556d50c-95e5-4cd5-a31d-b4d6c6ab1fb1
2022-03-28T23:47:52 0 7556d50c-95e5-4cd5-a31d-b4d6c6ab1fb1
2022-03-28T23:46:52 0 7556d50c-95e5-4cd5-a31d-b4d6c6ab1fb1
2022-03-28T23:45:52 0 7556d50c-95e5-4cd5-a31d-b4d6c6ab1fb1
2022-03-28T23:44:52 0 7556d50c-95e5-4cd5-a31d-b4d6c6ab1fb1
SELECT CreationUtcTime, Speed, convert(varchar,(CreationUtcTime - LAG(CreationUtcTime) OVER (ORDER BY CreationUtcTime)),108) AS diff     
FROM assetstatusrecords
WHERE Speed <> 0.00
ORDER BY CreationUtcTime

会给出时间的总和,然后你可以很容易地进行数据的计数和平均。