SQL基于时间线的统计
现有如下的表(SQL Server):
table: status_timeline
id | date | status |
---|---|---|
1 | 2017-10-10 00:00:00 | run |
2 | 2017-10-10 01:00:00 | stop |
3 | 2017-10-10 02:10:00 | run |
4 | 2017-10-11 00:00:00 | stop |
... | ... | ... |
每条记录一个时间戳,记录当前的status
,现在统计一段时间内(如前一天)run和stop的总时长,在SQL Server如何实现呢?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
假设你的id都是连续的,且发生的动作也是连续的,那么比较复杂就是某个status跨天问题。
比如id2的stop就要分两段,一段是10号的时间,一段是11号也有部分时间,下面是我写的一个例子,如果的数据库版本高于等于2012,可以使用LAG/LEAD简化语句,但仍然面临第一条和最后一条临界怎处理的问题。
我这里对于第一条起点前的时间认为是在另外一个状态,比如我的例子是熊0点20分开始run,那么之前20分认为是stop,结尾没有这么处理.统计时间以分钟为单位
11号250的来源:在2017-10-11 02:00:00 之前两小时认为是run,在2017-10-11 02:20:00至2017-10-11 04:30:00认为是run所有是250分钟
你好,我看到你回答一个关于网站中英文切换的问题,你做过这样的网站吗?能帮帮我吗?