Play IT

SQL CTE

Интерактивное демо «SQL CTE» — раздел Энциклопедия · Данные и разметка.

data-markupencyclopedia

Общие табличные выражения (CTE)

Цепочка WITH и рекурсивный обход иерархии — промежуточные результаты на каждом шаге

WITH базовые_данные AS ( SELECT employee_id, employee_name, department_id, salary FROM employees WHERE status = 'active' ) , данные_отделов AS ( SELECT d.department_id, d.department_name, COUNT(b.employee_id) AS employee_count FROM departments d LEFT JOIN базовые_данные b ON d.department_id = b.department_id GROUP BY d.department_id, d.department_name ) , расчеты_зарплат AS ( SELECT b.*, AVG(b.salary) OVER (PARTITION BY b.department_id) AS avg_dept_salary, b.salary - AVG(b.salary) OVER (PARTITION BY b.department_id) AS diff_from_avg FROM базовые_данные b ) SELECT r.employee_name, d.department_name, r.salary, r.avg_dept_salary, r.diff_from_avg FROM расчеты_зарплат r JOIN данные_отделов d ON r.department_id = d.department_id ORDER BY r.diff_from_avg DESC

Финальный результат · строк: 6

employee_namedepartment_namesalaryavg_dept_salarydiff_from_avg
ДинаПродажи105000965008500
АннаРазработка95000885006500
ВераАналитика71000695001500
ГлебАналитика6800069500-1500
БорисРазработка8200088500-6500
ЖаннаПродажи8800096500-8500