Получить список пользователей, у которых более пяти заказов

Объедините users и orders, сгруппируйте по пользователю и отфильтруйте группы через HAVING COUNT(o.id) > 5.

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

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

Объедините users и orders, сгруппируйте по пользователю и отфильтруйте группы через HAVING COUNT(o.id) > 5.

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

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

Условие

Составьте SQL‑запрос, который, используя таблицы users и orders:

  • определит всех клиентов, у которых количество заказов превышает пять;
  • вернёт их имя и количество заказов.

users +----+------+ | id | name | +----+------+ | | | +----+------+

orders +----+---------+---------------------+ | id | user_id | order_date | +----+---------+---------------------+ | | | | +----+---------+---------------------+

Ответ

Объедините users и orders, сгруппируйте по пользователю и отфильтруйте группы через HAVING COUNT(o.id) > 5.

SELECT u.name, COUNT(o.id) AS order_count
FROM users AS u
JOIN orders AS o ON o.user_id = u.id
GROUP BY u.id, u.name
HAVING COUNT(o.id) > 5;

Группировать только по имени нельзя: разные пользователи могут иметь одинаковые имена. Внутреннее соединение подходит, потому что пользователи без заказов всё равно не удовлетворяют условию. Строгое > 5 включает клиентов с шестью заказами и больше.

Если нужно учитывать только завершённые заказы или определённый период, соответствующий фильтр добавляют в WHERE до группировки. В исходном условии таких ограничений нет, поэтому считаются все строки заказов.

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

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

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

Подробнее