Сгруппируйте заказы по клиенту и отфильтруйте группы через HAVING SUM(total_amount) > 1000. Имя и город берутся из customers.
У вас есть две таблицы:
Сгруппируйте заказы по клиенту и отфильтруйте группы через HAVING SUM(total_amount) > 1000. Имя и город берутся из customers.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Условие
У вас есть две таблицы:
orders (заказы): order_id (уникальный идентификатор заказа) customer_id (идентификатор клиента) order_date (дата заказа) total_amount (общая сумма заказа)
customers (клиенты): customer_id (уникальный идентификатор клиента) customer_name (имя клиента) city (город клиента)
Задание: Напишите SQL-запрос, который вернет следующие данные:
Список клиентов (имя и город), которые сделали заказы на общую сумму больше 1000 долларов. Для каждого клиента из пункта 1 выведите общую сумму всех заказов.
Ответ
Сгруппируйте заказы по клиенту и отфильтруйте группы через HAVING SUM(total_amount) > 1000. Имя и город берутся из customers.
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;
Группировка по customer_id не объединяет разных людей с одинаковыми именами. WHERE проверяет отдельные строки до агрегации, поэтому для итоговой суммы нужен HAVING. Предполагается, что total_amount выражен в одной валюте и все перечисленные заказы входят в расчёт.