Вы хотите вывести только те категории товаров, где суммарные продажи больше 10000. Таблица sales с колонками category и amount. Какой запрос корректен?
A
SELECT category, SUM(amount) FROM sales WHERE SUM(amount) > 10000 GROUP BY category;B
SELECT category, SUM(amount) FROM sales GROUP BY category HAVING SUM(amount) > 10000;C
SELECT category, amount FROM sales GROUP BY category HAVING amount > 10000;D
SELECT category, SUM(amount) FROM sales HAVING SUM(amount) > 10000;Правильный ответ. Условия по агрегатам (
SUM, COUNT и др.) задаются в HAVING после GROUP BY.Разбор
WHERE фильтрует отдельные строки до группировки и не работает с агрегатами вроде SUM. Для условия по сумме нужна HAVING после GROUP BY: SELECT category, SUM(amount) FROM sales GROUP BY category HAVING SUM(amount) > 10000;. Без GROUP BY ссылка на category рядом с агрегатом некорректна, а условие на amount без агрегата сравнивает построчные значения, а не суммы.
Проверь себя · 1/3разбор после ответа
В таблице пользователей есть колонка
middle_name, в которой часто хранится NULL. Что вернёт выражение COUNT(middle_name)?Ещё вопросы по теме «Агрегация, GROUP BY и HAVING»
- Что делает оператор `DISTINCT` в `SELECT`-запросе?
- Что делает оператор `HAVING` в SQL-запросе с группировкой?
- Есть таблица `orders(user_id, amount)`. Какой запрос посчитает сумму всех заказов по каждому пользователю?
- Нужно посчитать сумму оплаченных заказов по каждому пользователю. В таблице `orders` есть поля `user_id`, `amount`, `status`. Какой запрос корректен и наиболее эффективен?
- В таблице пользователей есть колонка `middle_name`, в которой часто хранится `NULL`. Что вернёт выражение `COUNT(middle_name)`?
- Все вопросы по «Агрегация, GROUP BY и HAVING» →