Соедините клиентов с заказами, сгруппируйте по клиенту и отфильтруйте группы через HAVING SUM(total_amount) > 1000.
Напишите SQL-запрос, который выведет **имя клиента**, его **город** и **общую сумму** всех его заказов.
Соедините клиентов с заказами, сгруппируйте по клиенту и отфильтруйте группы через HAVING SUM(total_amount) > 1000.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Условие
Напишите SQL-запрос, который выведет имя клиента, его город и общую сумму всех его заказов. В итоговую выборку должны попасть только те клиенты, суммарные траты которых составляют более 1000 у.е.
Схема данных:
- Таблица
customers:
customer_id(int) – уникальный идентификатор клиента.customer_name(varchar) – имя клиента.city(varchar) – город проживания.
- Таблица
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: порог относится к общей сумме заказов, а не к каждому заказу отдельно.