SQL Средняя сумма - PullRequest
       27

SQL Средняя сумма

0 голосов
/ 13 февраля 2020

Я пытаюсь рассчитать среднюю готовность по рабочему центру, для этого я рассчитываю количество рабочих часов на машине, деленное на количество часов в смену. Проблема в том, что когда на одной машине выполняется несколько заданий, мне нужно сложить все эти рабочие часы и разделить их на 8, прежде чем получить среднее значение.

Надеюсь, это имеет смысл ... вот мой текущий SQL код, который возвращает "ORA-00937: не групповая функция для одной группы"

Select WORK_CENTER.EQNO,
AVG((Sum(V_COMB_PROD_CRW1.PROD_HRS) / 8 * 100)) As Available
From WORK_CENTER
Left Join V_COMB_PROD_CRW1 On WORK_CENTER.EQNO = V_COMB_PROD_CRW1.EQNO
Group By WORK_CENTER.EQNO

1 Ответ

1 голос
/ 13 февраля 2020

Проблема здесь в том, что вы делаете агрегат агрегата, и движок его не примет. Вам нужно найти идентификатор смены (я назвал его shiftID_Column). Получите сумму / 8 за смену и усредните их по EQNO. Вместо этого:

select EQNO, avg(Available_Pershift) as Available
from
(
  Select shiftID_Column, WORK_CENTER.EQNO,
 (Sum(V_COMB_PROD_CRW1.PROD_HRS) / 8 * 100)  As Available_Pershift
  From WORK_CENTER
  Left Join V_COMB_PROD_CRW1 On WORK_CENTER.EQNO = V_COMB_PROD_CRW1.EQNO
  Group By shiftID_Column, WORK_CENTER.EQNO
) group by EQNO
...