10. Выбрать клиентов, у которых больше трёх заказов дороже 10
Условие задачи:
Даны две таблицы:
Customer— клиенты;Order— заказы клиентов.
Необходимо выбрать всех клиентов, у которых больше трёх заказов с ценой больше 10.
Код:
Customer
Id
name
Order
Id
customer_id
Price
Спойлеры к решению
Подсказки
💡 Соедини клиентов и заказы по
💡 Сначала оставь только заказы с
💡 Затем сгруппируй данные по клиенту.
💡 Для отбора клиентов с более чем тремя такими заказами используй
Customer.Id = Order.customer_id.💡 Сначала оставь только заказы с
Price > 10.💡 Затем сгруппируй данные по клиенту.
💡 Для отбора клиентов с более чем тремя такими заказами используй
HAVING.Решение
SELECT
c.Id,
c.name
FROM Customer c
JOIN "Order" o
ON o.customer_id = c.Id
WHERE o.Price > 10
GROUP BY c.Id, c.name
HAVING COUNT(o.Id) > 3;
Условие:
WHERE o.Price > 10
оставляет только заказы дороже 10.
После этого записи группируются по клиенту, а:
HAVING COUNT(o.Id) > 3
оставляет только клиентов, у которых больше трёх таких заказов.
Имя Order может быть зарезервированным словом в СУБД, поэтому на практике таблицу лучше назвать, например, orders.