Вопрос проверяет знание конструкции CTE и её использования для упрощения сложных запросов.
CTE — это временные результаты, определённые в запросе для упрощения сложных операций. Они создаются с помощью ключевого слова WITH и используются для улучшения читаемости и многократного использования промежуточных данных.
CTE (Common Table Expression) — это способ определения временной таблицы в запросе, что делает сложные запросы более понятными и упрощает их написание.
Создание CTE:
WITH recent_orders AS (
SELECT * FROM orders WHERE order_date > CURRENT_DATE - INTERVAL '30 days'
)
SELECT * FROM recent_orders WHERE total > 100;Здесь recent_orders — это временный результат, который можно переиспользовать в основном запросе.
Рекурсивные CTE:
Используются для работы с иерархическими структурами.
WITH RECURSIVE subordinates AS (
SELECT id, name FROM employees WHERE manager_id IS NULL
UNION ALL
SELECT e.id, e.name FROM employees e
JOIN subordinates s ON e.manager_id = s.id
)
SELECT * FROM subordinates;Применение:
Для улучшения читаемости сложных запросов.
Для упрощения работы с временными данными.
Для иерархического поиска.
CTE полезны для структурирования и повторного использования промежуточных данных, особенно в сложных запросах.