Я выполняю запрос, чтобы выяснить, сколько примерной работы было выполнено на заводском цехе и сколько времени фактически отслеживалось по сравнению с количеством часов, которое имеет станция.
Я делаю это, чтобы определить, какие машины нам нужно приобрести больше. Что-то, что у нас имеет коэффициент использования более 100%, это то, что мы перегружаем.
Проблемав том, что я получаю астрономически высокие цифры для некоторых операций. Невозможно, чтобы 5 человек, каждый из которых работал на машине, могли отслеживать более 120 часов, однако результат, который я получаю, превышает тысячу.
Что яdo в запросе - это взять все пакеты, которые имеют задачи, и суммировать все предполагаемое время каждой задачи. Я суммирую все time_elapsed в batch_log и умножаю hours_open на количество машин этой операции.
Из-за этого у deburr должно быть максимум 120 часов, так как они открыты 24 часа в сутки, и есть 5 станций для удаления заусенцев.знаю, если вам нужна дополнительная информация.
SELECT
DATE(bl.start_time) as date_tracked,
o.name as operation,
SUM(TIME_TO_SEC(bl.time_elapsed)/ 3600) as time_elapsed,
SUM(t.estimated_nonrecurring + t.estimated_recurring) / 3600 as estimated,
o.hours_open as hours_open,
(count(distinct m.id)) as machine_count,
hours_open * (count(distinct m.id)) as total_hours,
(sum(TIME_TO_SEC(bl.time_elapsed)) / 3600) / (count(distinct m.id)) as time_elapsed_usage
FROM
batches b
INNER JOIN
tasks t on b.id = t.batch_id
INNER JOIN
batch_log bl on b.id = bl.batch_id
INNER JOIN
operations o on b.operation_id = o.id
INNER JOIN
machines m on b.operation_id = m.operation_id
WHERE
bl.time_elapsed < "8:00:00"
GROUP BY
b.operation_id,
DATE(bl.start_time)
ORDER BY date_tracked, o.id
Итак, я начал снова, и как только я дошел до этой точки, у меня, кажется, дублированиеза прошедшее время:
select
batches.operation_id,
date(batch_log.start_time) as date,
SEC_TO_TIME(SUM(TIME_TO_SEC(batch_log.time_elapsed))) as elapsed,
sum(tasks.estimated_nonrecurring + tasks.estimated_recurring) as estimated_time
from
batches
INNER JOIN batch_log on batches.id = batch_log.batch_id
INNER JOIN tasks on batches.id = tasks.batch_id
WHERE batches.id not in (
-1,
-2,
-3,
-4,
-5,
-6,
-7,
-8,
-9,
-10,
-11,
-12,
-13,
-14
)
group by Date(batch_log.start_time), operation_id
order by batch_log.start_time, batches.operation_id
РЕДАКТИРОВАТЬ: Что я делаю не так в вышесказанном?Если бы я знал это, я мог бы быть осторожнее, чтобы структурировать запросы лучше.Честно говоря, я ничего не смог найти, и я копался в книгах по SQL.Даже если бы я мог получить ответ на меньшее утверждение, я мог бы добиться определенного прогресса.Сейчас работаем над другими вещами.