【发布时间】:2009-10-22 18:21:13
【问题描述】:
我正在跟踪机器状态,它可以是 0,1 和 2, 并使用 time_stamp 将该数据存储在 sql 表中。 我在 sql server 中有一个带有下一个字段的表: 编号(整数) 时间戳(日期时间) machine_state(int)
机器状态与机器状态有关:
machine_state =0 - 机器弯腰
machine_state =1-带警报的机器
machine_state =2-机器运行
现在我想计算机器在每个班次中处于每个状态的时间。 班次是
- 8:00-17:00
- 17:00-01:00
- 01:00-08:00.
我的问题是如何计算机器每个状态的时间(sum_time_0、sum_time_1、sum_time_2)并按班次分组。我想以秒为单位计算时间,然后转换为分钟。
为了获得更好的图片,我确实导出了部分表格
EXPORT_TABLE
id time_stamp machine_state
1623 6.10.2009 17:09:00 1
1624 6.10.2009 17:17:00 2
1625 6.10.2009 17:17:00 1
1626 6.10.2009 17:17:00 2
1627 6.10.2009 17:18:00 1
1628 6.10.2009 17:18:00 2
1629 6.10.2009 18:04:00 1
1630 6.10.2009 18:06:00 2
1631 6.10.2009 18:07:00 1
1632 6.10.2009 18:12:00 2
1633 6.10.2009 18:28:00 1
1634 6.10.2009 18:28:00 2
1635 6.10.2009 19:16:00 1
1636 6.10.2009 19:21:00 2
1637 6.10.2009 19:49:00 1
1638 6.10.2009 20:23:00 2
任何建议都会有所帮助。 提前致谢。
【问题讨论】:
-
您的样本数据不显示秒数。 17 点 17 分,机器明显地从状态 2 波动到 1 再回到 2,但没有办法知道它在每个状态中持续了多长时间。
-
只要“真实”数据有秒,你就很好——否则我不知道你如何获得精确到秒的数据。
标签: sql sql-server tsql