Common Table Expression (CTE) — это временный именованный результирующий набор, определяемый с помощью ключевого слова WITH. Он существует только на протяжении выполнения запроса, в котором был объявлен, и не может быть использован вне этого единственного оператора.
WITH cte_name AS (
SELECT ...
)
SELECT * FROM cte_name;
RECURSIVE (или нативно в некоторых базах данных)Вместо того чтобы писать глубоко вложенный подзапрос для расчёта средних зарплат по отделам и последующей фильтрации, можно определить CTE:
WITH dept_avg AS (
SELECT department_id, AVG(salary) AS avg_salary
FROM employees
GROUP BY department_id
)
SELECT e.*
FROM employees e
JOIN dept_avg d ON e.department_id = d.department_id
WHERE e.salary > d.avg_salary;
Это делает намерение понятным, логику переиспользуемой и запрос простым в сопровождении.
CTE, определённый с помощью ключевого слова WITH, сохраняется в базе данных после выполнения запроса и может быть использован в последующих SQL-запросах.
Новый — ещё не проверен сообществом
Вы