logo
Лабы базы Данных / Базы данных / Введение в модель данных SQL

Предикат unique

SELECT DEPT.DEPT_NO, AVG (EMP.EMP_SAL)

FROM DEPT, EMP

WHERE DEPT.DEPT_NO = EMP.DEPT_NO

GROUP BY DEPT.DEPT_NO

HAVING UNIQIUE (SELECT AVG (EMP1.EMP_SAL)

FROM EMP EMP1

WHERE EMP1.DEPT_NO IS NOT NULL

GROUP BY EMP1.DEPT_NO

HAVING AVG (EMP1.EMP_SAL) = AVG (EMP.EMP_SAL));

Пример 15.10. Найти номера отделов и средний размер зарплаты сотрудников для таких отделов, где средний размер зарплаты сотрудников отличается от среднего размера зарплаты всех других отделов. (html,txt)

Вот альтернативная формулировка этого запроса с использованием предиката NOT EXISTS (пример 15.10.1):

SELECT DEPT.DEPT_NO, AVG (EMP.EMP_SAL)

FROM DEPT, EMP

WHERE DEPT.DEPT_NO = EMP.DEPT_NO

GROUP BY DEPT.DEPT_NO

HAVING NOT EXISTS (SELECT EMP1.DEPT_NO

FROM EMP EMP1

WHERE EMP1.DEPT_NO <> DEPT.DEPT_NO

GROUP BY EMP1.DEPT_NO

HAVING AVG (EMP1.EMP_SAL)= AVG (EMP.EMP_SAL));

Пример 15.10.1. (html,txt)