В запросе используется таблица EMPLOYEE с алиасом «x» и копия этой таблицы. Последовательность действий Oracle при отработке запроса такова: извлекается первая строка из таблицы с алиасом «x», из этой строки извлекается номер отдела, для этого номера отдела в копии таблицы подсчитывается средняя зарплата и если зарплата в извлеченной строке оказывается выше подсчитанной средней, соответсвующие столбцы из извлеченной строки «укладываются» в результат, вслед за тем извлекается вторая строка из т аблицы с алиасом «x» и т.д. – в цикле.
Q2_9 Получить список сотрудников, имеющих хотя бы одного подчиненного
where EMPLOYEE_id not in (select manager_id from EMPLOYEE);
строки не выбраны
Запрос отработан неверно, так как одно из значений внутреннего запроса – NULL значение, отчего отработка условия «…EMPLOYEE_id not in (select manager_id from EMPLOYEE)» ничего не извлекает для EMPLOYEE_id. Это касается только сравнения «not in». Для «…EMPLOYEE_id in (select manager_id from EMPLOYEE)» запрос отработал бы верно (смысловое значение запроса в этом случае было бы иное: сотрудники, имеющие подчиненных), несмотря на присутствие NULL значения во внутреннем селекте.