私は、工場の床でどれくらいの作業が行われたか、ステーションが利用可能な時間と比較して実際にどれくらいの時間が追跡されたかを調べるクエリを実行しています。MYSQLでレコードの重複が発生しているかどうかを確認するにはどうすればよいですか?
私は、「これは、我々は100%以上の使用率を持っている。何の多くを購入する必要がどのマシンかを決定するためにやっMは、我々は、容量を介しているものです。
問題は、私が「ということですある機械で働く5人の男性が120時間以上を追跡することは不可能だが、私が得ている結果は千以上である。
私がクエリで行うことはtakeすべてのバッチはタスクを持っており、各タスクの推定時間を合計します。私はbatch_logでtime_elapsedを合計し、hours_openにそのオペレーションのマシン数を掛けます。
このため、デバッラーは24時間開いており、バリ取りステーションが5つあるため、最大120時間が必要です。このクエリを見ると何か目立つように飛び出しますか?
詳細情報が必要な場合はお知らせください。
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ブックを掘り下げてきました。私が小さな声明で答えを得ることができたとしても、私はいくらか進歩を遂げることができました。今は他のものに取り組んでいます。
多分あなたは、1日で24時間以上働くことができる素晴らしい人を雇ったことがあります。仕事は「記録」と定義することができます。 :) –
本当に、あなたは一日のために単一のマシンのレコードを見てみましたか、正気は数字をチェックしましたか? –
あなたは '機械'に 'INNER JOIN 'していますが、決してそれを使用することはありません(サブクエリを通してのみ)。あなたのテーブルデザインとサンプルデータを知らなくても、それが実際の問題かどうかは分かりません。それを削除すると、パフォーマンスが向上する可能性があります... Gah、これの一部は、CTEでロールアップするのがずっとうれしいでしょう。 –