Выбрать всех клиентов, у которых больше трех заказов с ценой > 10

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.