Hardcte
Что такое CTE (Common Table Expression)?
1Постановка
Разберём, что от вас хотят в этом вопросе и как к нему подступиться на собеседовании.
2Решение
CTE — временный именованный результат внутри запроса, задаётся через WITH. Улучшает читаемость сложных запросов и поддерживает рекурсию.
WITH active_users AS (
SELECT id, name FROM users WHERE active = true
),
user_orders AS (
SELECT user_id, COUNT(*) AS cnt
FROM orders
GROUP BY user_id
)
SELECT a.name, COALESCE(o.cnt, 0) AS orders
FROM active_users a
LEFT JOIN user_orders o ON a.id = o.user_id;Рекурсивное CTE (WITH RECURSIVE) — для обхода деревьев и графов (например, все потомки категории). Альтернатива — derived tables в FROM и views (сохраняются в схеме).
3Как отвечать
- Сначала уточните условия и ограничения, покажите аналитическое мышление.
- Рассуждайте вслух — интервьюеру важен ход мысли, а не только финальный ответ.
- Оцените сложность по времени и памяти (Big-O), если это алгоритмический вопрос.
💡
На реальном собеседовании Alffert подскажет развёрнутый ответ в реальном времени.