我需要能够找出每个CPU工作人员在一段时间内工作的时间。设置数据库的结构以记录每个工作单元的epoch_start_time
,epoch_end_time
,computer_name
和worker_number
。我需要能够编写一个查询,让我选择@pQueryStartTime
和@pQueryEndTime
并返回一个表格,其中包含每个工作人员(唯一computer_name + worker_number
)的正常运行时间和查询停机时间范围。
我目前正在通过"采样"以高分辨率查看每个工作人员是否在任何特定时刻工作,但停机时间很少(工作时间为20小时至30秒),没有任何突出,或者如果确实如此,则会严重扭曲信息。
我对SQL并不擅长,所以如果有人能帮助我解释你如何从上述问题转向概念化解决方案,我真的很感激。另外,请告诉我是否还有其他任何我不清楚的事情。谢谢!
Source Table:
epoch_start_time(float), epoch_end_time(float), computer_name(varchar), worker_number(int)
0.0000,2.0000,bob,1
1.0000,3.0000,able,3
3.0000,4.0000,bob,1
4.0000,6.0000,bob,2
结果表:computer_name
和worker_number
的每个不同组合都有自己的行,其中seconds_working
是每个工作单位在{{1}之间工作的时间总和}和@pQueryStartTime
。
如果我以@pQueryEndTime
的0.000和@pQueryStartTime
的5来喂它,你会得到:
@pQueryEndTime
我想我已经解决了:(没有足够的要点作为答案提交)
computer_name(varchar), worker_number(int), seconds_working(float), seconds_down(float)
bob,1,3.0000,2.0000
bob,2,1.0000,4.0000
able,3,2.0000,3.0000