CTE
CTE даёт имя промежуточному результату
Common Table Expression создаётся через WITH. Он позволяет вынести отдельную выборку вверх запроса, дать ей понятное имя и затем обращаться к ней как к временной таблице в рамках этого SQL-выражения.
WITH paid_orders AS (
SELECT id, user_id, amount
FROM orders
WHERE status = 'PAID'
)
SELECT user_id, SUM(amount) AS total
FROM paid_orders
GROUP BY user_id;
Сначала определяется набор paid_orders, затем основной запрос работает уже с ним. Логика не обязательно становится другой — но структура сложного запроса часто становится заметно понятнее.
CTE существует только в рамках одного выражения
CTE не создаёт постоянную таблицу в базе. Его имя доступно только запросу, который следует после блока WITH.
CTE — прежде всего инструмент структуры запроса.
Не стоит автоматически считать его быстрее или медленнее аналогичного подзапроса: фактическое выполнение зависит от СУБД и плана запроса.
Проверь себя
Разбор задания
Ментор знает решение и поможет тебе прийти к нему самостоятельно
Войди, чтобы использовать Ментора
Ментор учитывает текущую задачу и историю диалога.
Войти
Проверь важные нюансы и ответ после собственной попытки.
Войди, чтобы посмотреть решение
Решение и разбор доступны после авторизации.
Войти