Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

Документы

Медиа

Назад
Вопрос про Postgres: cte, with, recursive, query optimization

Что такое CTE (Common Table Expressions) в PostgreSQL?

Вопрос проверяет знание конструкции 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 полезны для структурирования и повторного использования промежуточных данных, особенно в сложных запросах.

Уровень

  • Рейтинг:

    2

  • Сложность:

    4

Навыки

  • Postgres

    Postgres

Ключевые слова

#cte

#with

#recursive

#query optimization

Подпишись на Python Developer в телеграм