2 года назад
Пример Common Table Expressions (CTE) в PostgreSQL
Общие табличные выражения - это конструкции начинающиеся с WITH Есть таблица categories с полями id, name, parent_id (null если нет родительской категории) WITH RECURSIVE category_hierarchy AS ( -- Базовый случай: выбор всех категорий без родителей SELECT id, name as parent, name, ARRAY[id]::BIGINT[] AS ids, -- массив идентификаторов категорий ARRAY[]::VARCHAR[] AS names, -- массив названий категорий 1 AS level FROM categories WHERE parent_id IS NULL UNION ALL -- Рекурсивный случай: выбор дочерних категорий SELECT c.id, ch.parent, c...
CTE в SQL: как писать читаемые запросы с WITH
CTE (Common Table Expression) — именованный временный результат запроса, который можно использовать как таблицу внутри основного запроса. Делает сложные запросы читаемыми. Открыть тренажёр → https://sqllab.ru/practice WITH название AS ( SELECT ... ) SELECT * FROM название; Без CTE: SELECT user_id, COUNT(*) AS orders_count FROM ( SELECT user_id FROM orders WHERE status = 'completed' ) sub GROUP BY user_id HAVING COUNT(*) > 5; С CTE: WITH completed_orders AS ( SELECT user_id FROM orders WHERE status...