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

Подзапросы

Подзапрос здесь приходится не узнавать, а исполнять мысленно: определить, сколько строк он вернёт, что произойдёт при пустом результате, как работает корреляция и почему внешне похожие IN, EXISTS и JOIN дают разную гранулярность. В нескольких заданиях ошибка спрятана в области видимости псевдонима или в неожиданном множестве строк.

Отвечено: 0 из 20
⏱ --:--
0%
💡 Инструкция: Выбери один ответ из четырёх. В тесте 20 вопросов и 36 минут. После завершения откроются общий процент, четыре тематические шкалы, правильные ответы и разбор каждого задания.
Вопрос 1 из 20
Что произойдёт, если подзапрос вернёт две строки?
SQL
SELECT name
FROM customers
WHERE id = (SELECT customer_id FROM orders WHERE status = 'new');
Вопрос 2 из 20
Какое значение даст скалярный подзапрос, если он не вернул ни одной строки?
SQL
SELECT (SELECT amount FROM orders WHERE id = -1) AS amount;
Вопрос 3 из 20
Почему AVG делает подзапрос скалярным даже при множестве товаров?
SQL
SELECT *
FROM products
WHERE price > (SELECT AVG(price) FROM products);
Вопрос 4 из 20
Столбец salary задан как NOT NULL. Какой запрос получает имена всех сотрудников с максимальной зарплатой, включая ничью?
Вопрос 5 из 20
Подзапрос в SELECT считает заказы клиента. Сколько строк вернёт весь запрос?
SQL
SELECT c.id,
       (SELECT COUNT(*) FROM orders o WHERE o.customer_id=c.id) AS order_count
FROM customers c;
Вопрос 6 из 20
Что проверяет EXISTS?
SQL
SELECT c.id
FROM customers c
WHERE EXISTS (SELECT 1 FROM orders o WHERE o.customer_id=c.id);
Вопрос 7 из 20
Почему SELECT NULL внутри EXISTS не делает результат NULL?
SQL
SELECT EXISTS (SELECT NULL FROM orders WHERE id=10);
Вопрос 8 из 20
Как получить клиентов без заказов, не завися от NULL в orders.customer_id?
Вопрос 9 из 20
Что произойдёт с дубликатами в подзапросе IN?
Вопрос 10 из 20
Как читается условие price > ALL (подзапрос)?
SQL
SELECT * FROM products
WHERE price > ALL (SELECT price FROM archived_products);
Вопрос 11 из 20
Какая внешняя ссылка делает подзапрос коррелированным?
SQL
SELECT c.id,
       (SELECT COUNT(*) FROM orders o WHERE o.customer_id=c.id) AS order_count
FROM customers c;
Вопрос 12 из 20
В чём ошибка условия внутри подзапроса?
SQL
SELECT c.id
FROM customers c
WHERE EXISTS (
  SELECT 1 FROM orders o
  WHERE o.customer_id = o.customer_id
);
Вопрос 13 из 20
Почему явные псевдонимы особенно важны в коррелированном подзапросе?
Вопрос 14 из 20
Что считает этот коррелированный подзапрос?
SQL
SELECT c.id,
 (SELECT COUNT(*)
  FROM orders o
  WHERE o.customer_id=c.id AND o.amount>100) AS expensive_orders
FROM customers c;
Вопрос 15 из 20
Какой риск несёт коррелированный подзапрос, если он логически выполняется для миллионов внешних строк?
Вопрос 16 из 20
Нужно только проверить наличие заказа и оставить клиента один раз. Какая форма выражает задачу наиболее прямо?
Вопрос 17 из 20
Нужно вывести каждую позицию заказа вместе с именем клиента. Что подходит лучше?
Вопрос 18 из 20
Почему скалярный подзапрос с LIMIT 1 без ORDER BY может быть ненадёжным?
SQL
SELECT (SELECT status FROM orders WHERE customer_id=10 LIMIT 1);
Вопрос 19 из 20
Для задачи «товары дороже среднего в своей категории» какой подход естественен?
Вопрос 20 из 20
В blocked_customers столбец id — собственный первичный ключ, а ссылка на клиента хранится в customer_id. Как удалить только заблокированных клиентов?

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

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

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

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