Что такое CTE в СУБД

Рассмотрим простой пример использования Common Table Expression (CTE) с операцией JOIN в PostgreSQL.

Предположим, у нас есть две таблицы: employees (сотрудники) и departments (отделы). Таблица employees содержит информацию о сотрудниках, а departments — о отделах, в которых они работают.

Таблица employees:

  • emp_id (идентификатор сотрудника)
  • name (имя сотрудника)
  • dept_id (идентификатор отдела)

Таблица departments:

  • dept_id (идентификатор отдела)
  • dept_name (название отдела)

Мы хотим получить список всех сотрудников, работающих в отделе IT, включая название их отдела. Для этого мы можем использовать CTE для извлечения интересующих нас отделов, а затем выполнить JOIN с таблицей сотрудников, чтобы получить нужную информацию.

WITH ITDepartments AS (
SELECT dept_id
FROM departments
WHERE dept_name = 'IT'
)

SELECT e.name, d.dept_name
FROM employees e
JOIN ITDepartments d ON e.dept_id = d.dept_id;

В этом запросе CTE ITDepartments выбирает все идентификаторы отделов, название которых соответствует «IT». Затем основной запрос соединяет таблицу employees с CTE ITDepartments по полю dept_id, чтобы выбрать только тех сотрудников, которые работают в отделе IT. В результате запрос вернёт таблицу с именами сотрудников и наименованием их отдела, что в данном случае будет «IT».

Этот пример демонстрирует, как CTE можно использовать для структурирования сложных запросов и делания их более читаемыми и удобными для анализа. CTE особенно полезны в случаях, когда нужно выполнить несколько последовательных операций с данными перед их объединением с другими данными.

Loading

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *