Напишите SQL-запрос, который выведет **имя клиента**, его **город** и **общую сумму** всех его заказов.

Соедините клиентов с заказами, сгруппируйте по клиенту и отфильтруйте группы через HAVING SUM(total_amount) > 1000.

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

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

Соедините клиентов с заказами, сгруппируйте по клиенту и отфильтруйте группы через HAVING SUM(total_amount) > 1000.

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

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

Условие

Напишите SQL-запрос, который выведет имя клиента, его город и общую сумму всех его заказов. В итоговую выборку должны попасть только те клиенты, суммарные траты которых составляют более 1000 у.е.


Схема данных:

  1. Таблица customers:
  • customer_id (int) – уникальный идентификатор клиента.
  • customer_name (varchar) – имя клиента.
  • city (varchar) – город проживания.
  1. Таблица orders:
  • order_id (int) – уникальный номер заказа.
  • customer_id (int) – ID клиента, совершившего покупку.
  • total_amount (decimal) – сумма конкретного заказа.

Ответ

Соедините клиентов с заказами, сгруппируйте по клиенту и отфильтруйте группы через HAVING SUM(total_amount) > 1000.

SELECT c.customer_name, c.city, SUM(o.total_amount) AS total_spent
FROM customers AS c
JOIN orders AS o ON o.customer_id = c.customer_id
GROUP BY c.customer_id, c.customer_name, c.city
HAVING SUM(o.total_amount) > 1000;

Группировка включает идентификатор, чтобы не объединить однофамильцев из одного города. WHERE не заменяет HAVING: порог относится к общей сумме заказов, а не к каждому заказу отдельно.

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

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

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

Подробнее