Вы ссылаетесь на CODICE
вне этих двух подзапросов с псевдонимом (dip
или dip1
), присвоенным DIPARTIMENTO
в подзапросе. (Область псевдонимов находится только внутри подзапроса)
В любом случае, лучшим решением будет использование analytical function
следующим образом:
SELECT MATRICOLA, COGNOME
FROM
( SELECT
EMP.MATRICOLA, EMP.COGNOME, EMP.STIPENDIO,
AVG(EMP.STIPENDIO) OVER(
PARTITION BY EMP.DIPARTIMENTO_CODICE_FK
) AS AVG_SALARY_DEPT
FROM IMPIEGATO EMP
JOIN DIPARTIMENTO DEPT ON EMP.DIPARTIMENTO_CODICE_FK = DEPT.CODICE
)
WHERE STIPENDIO >= 1.1 * AVG_SALARY_DEPT;
Вы также можете использовать свой собственный запрос с небольшим немного изменений в нем. Изменения упоминаются в комментариях к следующему запросу:
SELECT t1.MATRICOLA, t1.COGNOME
from (
SELECT *
FROM IMPIEGATO imp1,
DIPARTIMENTO dip1
where imp1.dipartimento_codice_fk = dip1.codice
) t1 join -- given alias
(
SELECT dip.codice, 1.1*avg(imp.stipendio) AS "STIPENDIO_MEDIO_10"
FROM IMPIEGATO imp
JOIN DIPARTIMENTO dip ON dip.CODICE=imp.DIPARTIMENTO_CODICE_FK
GROUP BY dip.codice
) t2 on t1.codice = t2.codice -- given alias
-- and added the join condition with proper alias(t1, t2)
where t1.stipendio >= t2.STIPENDIO_MEDIO_10 -- added the condition to fetch desired result
Cheers !!