簡體   English   中英

帶JOIN和按平均分組的SQL

[英]SQL with JOIN and Group By Plus Average

我希望產生提高車間效率的結果。 為此,我需要來自3個不同表JOMAST,JODRTG和INRTGS的數據。 所以我想出了以下查詢:

select jomast.fpartno AS 'Part Number',
JODRTG.foperno AS 'OP Number',
JODRTG.fopermemo As ' Description',
JODRTG.fpro_id AS 'Work Center',
jodrtg.fprod_tim AS ' Act. Production Time',
inrtgs.fuprodtime AS 'Est. Prodution Time'
from jodrtg
Left join jomast on jodrtg.fjobno = jomast.fjobno
left join inrtgs on jomast.fpartno = inrtgs.fpartno

現在,我需要做的就是使法案平均化。 生產時間。 然后將有關該零件的所有OP編號簡化為零件編號。

當我嘗試對Group By JOMAST.fpartno ,出現錯誤,指出它無法使用並且位於外部列。 如果我在工序編號上進行分組依據,則每個零件的所有工序10將被合並。 這不是期望的結果。

有人可以指出我要達到目標的方向嗎?

這聽起來像你希望擁有多個行的所有顯示相同jodrtg.fpartno ,無不呈現出不同的jodrtg.fprod_tim ,但所有顯示的平均值(下同)值jodrtg.fprod_tim是嗎?

如果是這樣,請添加:

AVG(jodrtg.fprod_tim) OVER(PARTITION BY jodrtg.fpartno) as avg_for_all_fprod_tim

作為您選擇的列列表中的一列。

有關更多信息,您可以在Google PARTITION BY上進行搜索,但可以將其視為對數據執行GROUP BY x,AVG(y)(或總和,最大值等)的指令,然后將每個AVG放入行數據中x所在的行。

從本質上講,這與編寫較小的子查詢(SELECT jodrtg.fpartno, avg(jodrtg.fprod_tim) as avg_for_all_frod_tim FROM blah GROUP BY jodrtg.fpartno)然后將其重新連接到主查詢相同

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM