🗄️ SQL и базы данных  ·  20 вопросов  ·  ~37 мин  ·  ⏱ Таймер 37:00  ·  Средний  · 

Общие табличные выражения CTE

CTE в тесте используется как именованный этап, а не как украшение запроса. Нужно проследить область видимости, порядок зависимостей, рекурсивное наращивание результата и условие остановки. Отдельные задания проверяют, когда WITH делает запрос яснее, а когда лишь прячет неопределённую гранулярность или не гарантирует ускорение.

Отвечено: 0 из 20
⏱ --:--
0%
💡 Инструкция: Выбери один ответ из четырёх. В тесте 20 вопросов и 37 минут. После завершения откроются общий процент, четыре тематические шкалы, правильные ответы и разбор каждого задания.
Вопрос 1 из 20
Где доступно имя recent_orders?
SQL
WITH recent_orders AS (
  SELECT * FROM orders WHERE created_at >= CURRENT_DATE - 7
)
SELECT COUNT(*) FROM recent_orders;
Вопрос 2 из 20
Что задаёт список (customer_id, total) после имени CTE?
SQL
WITH totals(customer_id, total) AS (
  SELECT customer_id, SUM(amount) FROM orders GROUP BY customer_id
)
SELECT * FROM totals;
Вопрос 3 из 20
Можно ли обратиться к CTE дважды в основном запросе?
Вопрос 4 из 20
Почему второй SELECT не видит x?
SQL
WITH x AS (SELECT 1 AS n)
SELECT * FROM x;

SELECT * FROM x;
Вопрос 5 из 20
Какое имя столбца имеет CTE, если внутренний SELECT задаёт AS total?
SQL
WITH x AS (SELECT SUM(amount) AS total FROM orders)
SELECT total FROM x;
Вопрос 6 из 20
Может ли второй CTE ссылаться на первый, объявленный выше?
SQL
WITH paid AS (
  SELECT * FROM orders WHERE status='paid'
),
totals AS (
  SELECT customer_id, SUM(amount) total FROM paid GROUP BY customer_id
)
SELECT * FROM totals;
Вопрос 7 из 20
Почему ссылка из first на second ниже обычно неверна без специальной рекурсивной конструкции?
SQL
WITH first AS (SELECT * FROM second),
     second AS (SELECT 1 AS n)
SELECT * FROM first;
Вопрос 8 из 20
На каком этапе правильнее считать средний total по клиентам?
Вопрос 9 из 20
Что делает финальный запрос?
SQL
WITH per_customer AS (
  SELECT customer_id, SUM(amount) AS total
  FROM orders GROUP BY customer_id
)
SELECT AVG(total) FROM per_customer;
Вопрос 10 из 20
Почему имя filtered лучше имени temp1 для CTE?
Вопрос 11 из 20
Какие две части обязательны у типичного рекурсивного CTE?
Вопрос 12 из 20
Какие значения вернёт запрос?
SQL
WITH RECURSIVE nums(n) AS (
  VALUES (1)
  UNION ALL
  SELECT n+1 FROM nums WHERE n<4
)
SELECT n FROM nums;
Вопрос 13 из 20
Что предотвращает бесконечный рост nums?
SQL
WITH RECURSIVE nums(n) AS (
  VALUES (1)
  UNION ALL
  SELECT n+1 FROM nums WHERE n<4
) SELECT * FROM nums;
Вопрос 14 из 20
Для обхода дерева вниз какое условие связи обычно нужно?
Вопрос 15 из 20
Какой риск возникает в иерархии с ошибочным циклом A → B → A?
Вопрос 16 из 20
Гарантирует ли CTE сам по себе ускорение запроса?
Вопрос 17 из 20
Когда CTE особенно полезен для чтения?
Вопрос 18 из 20
Когда временная таблица может быть уместнее одного CTE?
Вопрос 19 из 20
Что не гарантирует этот рекурсивный запрос без ORDER BY в финальном SELECT?
SQL
WITH RECURSIVE tree AS (
  SELECT id, parent_id, 0 depth FROM nodes WHERE parent_id IS NULL
  UNION ALL
  SELECT n.id, n.parent_id, t.depth+1
  FROM nodes n JOIN tree t ON n.parent_id=t.id
)
SELECT * FROM tree;
Вопрос 20 из 20
Какой признак хорошего CTE важнее длины его имени?

Ответьте на все 20 вопросов, чтобы получить результат

🔗 Встроить тест на свой сайт (iframe) ▼

Скопируйте код и вставьте в любое место на вашем сайте:

Также доступна прямая ссылка на embed-страницу