【发布时间】:2011-09-23 13:27:24
【问题描述】:
我有三张表,一张是工厂工人分批完成的任务,另一张表,每个任务都有一个batch_id,多个任务可以有相同的batch_id。第三个表是 batch_log,其中以唯一 id、batch_id、人的用户 ID、start_time 和 end_time 的形式记录了某人处理批次的所有时间。
每个任务都有一个以秒为单位的estimate_recurring 时间和一个以秒为单位的estimate_nonrecurring 时间。我正在寻找按 operation_id 分组的这两个字段的总和,它是任务表中的一个字段,表示它是否是激光切割、去毛刺、绘画等任务。
问题是我只想要在 time_period 期间在 batch_log 中具有批处理的任务。批次在 batch_log 表中有多个条目。
这是我正在尝试的:
SELECT
operation_id, SUM(t.estimated_nonrecurring + t.estimated_recurring) / 3600 as work_completed
FROM tasks t
INNER JOIN batch_log l on t.batch_id = l.batch_id
WHERE
l.start_time BETWEEN DATE("10:00:00") AND DATE(NOW())
AND
l.time_elapsed < "10:00:00"
GROUP BY t.operation_id
我担心我会得到比实际更高的估计值,因为任务表中的多个条目可能具有相同的批次。
【问题讨论】:
-
需要更多信息,什么是多任务,给我们一些示例数据。今天的问题是怎么回事? TGIF
-
感谢乔恩,回复,我已经更新了描述,我应该发布什么样的数据?
-
您的解决方案直接进入任务表,而不考虑批处理表中的批次。您需要加入任务->批处理->批处理日志。请参阅下面的解决方案。
标签: mysql join sum duplication