这实际上是我关于stackoverflow的第一个问题,所以如果我感到困惑或不清楚,我真诚地道歉。
话虽如此,这是我的问题:
我在一家汽车制造公司工作,我们最近实现了跟踪机器何时空闲的功能。这是通过评估称为“idle_start”的事件的开始和结束时间来完成的。
现在,我正在尝试获取机器空闲时间的总和。现在,我想通了,但有些 idle_times 超过 24 小时。
因此,当我指定我只想查看某一天的 idle_time 总和时,总和还计算过去 24 小时的空闲时间。
我想在那 24 小时内提供 CUTTING OFF 的选项。这可能吗?
这是查询:
{代码}
SELECT r.`name` 'Producer'
, m.`name` 'Manufacturer'
-- , timediff(re.time_end, re.time_start) 'Idle Time Length'
, SEC_TO_TIME(SUM((TIME_TO_SEC(TIMEDIFF(re.time_end, re.time_start))))) 'Total Time'
, (SUM((TIME_TO_SEC(TIMEDIFF(re.time_end, re.time_start)))))/3600 'Total Time in Hours'
, (((SUM((TIME_TO_SEC(TIMEDIFF(re.time_end, re.time_start)))))/3600))/((IF(r.resource_status_id = 2, COUNT(r.resource_id), NULL))*24) 'Percent Machine is Idle divided by Machine Hours'
FROM resource_event re
JOIN resource_event_type ret
ON re.resource_event_type_id = ret.resource_event_type_id
JOIN resource_event_type reep
ON ret.parent_resource_event_type_id = reep.resource_event_type_id
JOIN resource r
ON r.`resource_id` = re.`resource_id`
JOIN manufacturer m
ON m.`manufacturer_id` = r.`manufacturer_id`
WHERE re.`resource_event_type_id` = 19
AND ret.`parent_resource_event_type_id` = 3
AND DATE_FORMAT(re.time_start, '%Y-%m-%d') >= '2013-08-12'
AND DATE_FORMAT(re.time_start, '%Y-%m-%d') <= '2013-08-18'
-- AND re.`resource_id` = 8
AND "Idle Time Length" IS NOT NULL
AND r.manufacturer_id = 13
AND r.resource_status_id = 2
GROUP BY 1, 2
随意忽略顶部的破折号。请告诉我是否可以更具体地解决这个问题并为那些愿意帮助我的人提供更少的头痛。
太感谢了!