Выбор ответа Junior Подзапросы и CTE обновлено
Что такое коррелированный подзапрос
Вопрос
Какой подзапрос называется коррелированным?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: Ссылается на колонки внешнего запроса. Корреляция значит зависимость от текущей строки внешнего запроса, например WHERE o.customerid = c.id.
Варианты ответа
- Ссылается на колонки внешнего запросаправильный ответ
- Стоит в секции FROM и материализуется до основного запроса
- Возвращает несколько колонок и сравнивается с кортежем
- Использует JOIN внутри и соединяется с внешней таблицей
Разбор
Корреляция значит зависимость от текущей строки внешнего запроса, например WHERE o.customer_id = c.id. Подзапрос в FROM (derived table) обычно как раз некоррелированный. Число колонок и JOIN внутри не делают подзапрос коррелированным. Важно: «вычисляется для каждой строки» это логическая модель, планировщик часто превращает такой подзапрос в соединение.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.
Термины по теме
Ещё по теме «Подзапросы и CTE»
- Полный путь категории в дереве
- Клиенты, у которых все заказы оплачены
- Дни без продаж по регионам
- Цепочка руководителей вверх по дереву
- Дороже любой книги: ALL против MAX
- Категория с максимальной выручкой
- Два последних заказа каждого клиента через LATERAL
- Дороже среднего по своей категории