Коррелированный подзапрос — это подзапрос, который ссылается на столбцы из внешнего запроса. В отличие от обычного подзапроса, он не может выполняться независимо — он пересчитывается для каждой строки, обработанной внешним запросом.
Типичный сценарий — поиск сотрудников, чья зарплата превышает среднюю зарплату в их собственном отделе — то, что обычный подзапрос не может сделать, поскольку среднее значение должно рассчитываться динамически для каждого отдела.
SELECT e.employee_id, e.name, e.salary
FROM employees e
WHERE e.salary > (
SELECT AVG(e2.salary)
FROM employees e2
WHERE e2.department_id = e.department_id
);
employeesAVG(salary), отфильтрованное по department_id этой строкиe.department_id делает этот подзапрос коррелированнымEXISTS и фильтрация по группамJOIN с агрегацией или оконные функции вроде AVG() OVER (PARTITION BY department_id)Коррелированный подзапрос ссылается на столбцы из внешнего запроса и переоценивается для каждой строки, обработанной внешним запросом, в то время как обычный подзапрос выполняется только один раз и возвращает фиксированный результат.
Новый — ещё не проверен сообществом
Вы