Есть таблица ManagerSales с колонками «ФИО» и «Стоимость», содержащая около миллиона строк продаж за месяц. Как SQL-запросом получить менеджеров, чья суммарная сумма продаж за месяц превышает 1 000 000 рублей? Почему для условия по сумме используется HAVING, а не WHERE?

Сгруппируйте строки по менеджеру, вычислите SUM и отфильтруйте группы через HAVING; WHERE применяется к исходным строкам до агрегации.

Короткий ответ

Что ответить на собеседовании

Сгруппируйте строки по менеджеру, вычислите SUM и отфильтруйте группы через HAVING; WHERE применяется к исходным строкам до агрегации.

Подробный разбор

Ответ с пояснениями

Сгруппируйте строки по менеджеру, вычислите SUM и отфильтруйте группы через HAVING; WHERE применяется к исходным строкам до агрегации.

Если таблица содержит именно продажи нужного месяца:

SELECT "ФИО", SUM("Стоимость") AS total
FROM "ManagerSales"
GROUP BY "ФИО"
HAVING SUM("Стоимость") > 1000000;

Синтаксис кавычек приведён для PostgreSQL. При наличии разных месяцев сначала нужен WHERE по дате. В рабочей схеме лучше группировать по manager_id: одинаковые ФИО могут принадлежать разным людям.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее