首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >查询累计一段时间内的状态持续时间,不会重叠

查询累计一段时间内的状态持续时间,不会重叠
EN

Stack Overflow用户
提问于 2020-07-24 00:45:21
回答 1查看 19关注 0票数 0

我正在尝试创建一个在给定时间段内的条形图,该条形图使用SQL Server查询的结果显示给定状态的累积时间。这些状态的时间不能重叠(一个实体不能同时是两个状态)。时间段不会超过8-10小时。我附上了一张样本数据的图像。在其中,您可以看到“123”实体在2分钟内从状态3变为7。下面的查询接近于我所需要的,但是,它没有考虑与不同状态相关的时间,而只是简单地查看每个状态的“开始”时间和“结束”时间。谁能给我指个方向?谢谢!

代码语言:javascript
复制
SELECT state.status,
       min(state.timestamp) start_time,
       max(state.timestamp) end_time,
       datediff(second, min(state.timestamp),max(state.timestamp)) elapsed_sec,
       convert(varchar, max(state.timestamp) - min(state.timestamp), 108) accumulated_time
FROM state
WHERE state.entity = '123' AND CAST(timestamp AS DATE) = CAST(GETDATE() AS DATE)
GROUP BY state.status;

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-07-24 00:54:42

代码语言:javascript
复制
with data as (
    select
        timestamp, entity, status,
        row_number() over (partition by entity order by timestamp, id) - 
            row_number() over (partition by entity, status order by timestamp, id) as grp
    from state
)
select entity, status, min(timestamp) as startTime, max(timestamp) as endTime
from data
group by entity, status, grp;
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63059207

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档