🗄️ SQL и базы данных  ·  20 вопросов  ·  ~35 мин  ·  ⏱ Таймер 35:00  ·  Лёгкий  · 

Агрегатные функции и GROUP BY

Тест построен вокруг подсчётов, которые часто выглядят верно до проверки на маленькой таблице. Нужно различить COUNT(*) и COUNT(column), не потерять группы из-за WHERE, правильно применить HAVING, увидеть дубли после JOIN и выбрать запрос, который возвращает ровно одну строку на требуемую группу.

Отвечено: 0 из 20
⏱ --:--
0%
💡 Инструкция: Выбери один ответ из четырёх. В тесте 20 вопросов и 35 минут. После завершения откроются общий процент, четыре тематические шкалы, правильные ответы и разбор каждого задания.
Вопрос 1 из 20
Чем отличаются два значения count_all и count_score?
SQL
WITH t(score) AS (VALUES (10), (NULL), (20))
SELECT COUNT(*) AS count_all, COUNT(score) AS count_score
FROM t;
Вопрос 2 из 20
Чему равен AVG(score)?
SQL
WITH t(score) AS (VALUES (10), (NULL), (20))
SELECT AVG(score) FROM t;
Вопрос 3 из 20
Что вернёт SUM(amount), если WHERE не оставил ни одной строки?
SQL
SELECT SUM(amount)
FROM orders
WHERE created_at < DATE '1900-01-01';
Вопрос 4 из 20
Какой запрос считает число различных customer_id среди заказов?
Вопрос 5 из 20
В PostgreSQL сравниваются MIN(created_at) и сортировка с NULLS FIRST. В чём различие при наличии NULL?
Вопрос 6 из 20
Сколько групп вернёт этот запрос?
SQL
WITH sales(category, amount) AS (VALUES ('A',10),('A',20),('B',5))
SELECT category, SUM(amount)
FROM sales
GROUP BY category;
Вопрос 7 из 20
В employees одному department_id соответствуют разные сотрудники, а department_id не уникален. Почему запрос неверен в PostgreSQL?
SQL
SELECT department_id, name, SUM(salary)
FROM employees
GROUP BY department_id;
Вопрос 8 из 20
Как изменится гранулярность, если к GROUP BY city добавить product?
Вопрос 9 из 20
Нужна одна строка на календарный месяц за несколько лет. Почему GROUP BY EXTRACT(MONTH FROM created_at) недостаточен?
Вопрос 10 из 20
Какой запрос возвращает сумму по отделу и не дробит отдел по каждому сотруднику?
Вопрос 11 из 20
Какой запрос оставит только отделы, где средняя зарплата выше 100000?
Вопрос 12 из 20
Что делает WHERE status = 'paid' в этом отчёте?
SQL
SELECT customer_id, SUM(amount)
FROM orders
WHERE status = 'paid'
GROUP BY customer_id;
Вопрос 13 из 20
Какой смысл у HAVING COUNT(*) >= 3?
SQL
SELECT customer_id, COUNT(*)
FROM orders
GROUP BY customer_id
HAVING COUNT(*) >= 3;
Вопрос 14 из 20
Можно ли условие country = 'EE' перенести из HAVING в WHERE, если country входит в GROUP BY и требуется исключить другие страны до подсчёта?
Вопрос 15 из 20
Почему HAVING amount > 100 обычно неверен при GROUP BY customer_id?
Вопрос 16 из 20
После JOIN одного заказа с тремя позициями COUNT(*) даёт 3. Как посчитать число заказов?
Вопрос 17 из 20
Как посчитать число оплаченных заказов одной агрегацией в PostgreSQL?
Вопрос 18 из 20
Почему COUNT(status = 'paid') не считает только оплаченные строки?
SQL
SELECT COUNT(status = 'paid') FROM orders;
Вопрос 19 из 20
Как сохранить категории без товаров в отчёте с нулевым количеством?
Вопрос 20 из 20
Отчёт строится через categories LEFT JOIN products. Почему для числа товаров нужно считать COUNT(p.id), а не COUNT(*)?

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

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

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

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