You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何识别时间序列数据中的连续时间跨度并计算汇总统计量?

需求说明

我已经将时间序列数据整理成如下格式的#temp临时表:

StartFinishValue
2022-05-12 11:302022-05-12 11:4528.264
2022-05-12 11:452022-05-12 12:0028.262
2022-05-12 12:002022-05-12 12:1528.242
2022-06-09 11:302022-06-09 11:4527.862
2022-06-09 12:002022-06-09 12:1513.727
2022-06-09 12:152022-06-09 12:3013.717
2022-06-09 12:302022-06-09 12:4513.724
2022-06-09 12:452022-06-09 13:009.1226

我需要识别数据中下一行Start时间与当前行Finish时间完全衔接的连续时间跨度,然后计算每个连续跨度内Value的平均值和最大值,期望结果如下:

StartFinishAvgValMaxVal
2022-05-12 11:302022-05-12 12:1528.25628.264
2022-06-09 11:302022-06-09 11:4527.86227.862
2022-06-09 12:002022-06-09 13:0012.57313.727

我的思路与困惑

我考虑用PARTITION来分区,但不知道怎么基于「下一行Start等于当前行Finish」这个条件来划分分区。用过程式写法实现很简单,但我需要在存储过程里完成,所以希望用纯声明式SQL写法。

我想过先给初始表加个行号:

ROW_NUMBER() OVER (ORDER BY Start ASC) as Row_Num

然后尝试写聚合查询:

SELECT Start, Finish, AVG(Value) AS AvgVal, MAX(Value) AS MaxVal
FROM #temp
PARTITION BY

但不知道怎么通过行号关联下一行,比较时间来完成分区。恳请帮忙解决。


内容的提问来源于stack exchange,提问作者Naman Shah

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.24 13:15:30