1. Найти ID юнитов, проданных на сумму более 1000 рублей после 10:00
Условие задачи:
Даны таблицы Unit и Sales.
Необходимо найти id юнитов, сумма продаж которых после 2024-06-03 10:00 превышает 1000 рублей.
Код:
CREATE TABLE Unit (
Id INT PRIMARY KEY,
Price DECIMAL(10, 2)
);
CREATE TABLE Sales (
Id INT PRIMARY KEY,
Unit_id INT,
Sale_time TIMESTAMP,
FOREIGN KEY (Unit_id) REFERENCES Unit(Id)
);
Спойлеры к решению
Подсказки
💡 Соедини таблицы
💡 Сначала отфильтруй продажи по времени через
💡 Затем сгруппируй продажи по идентификатору юнита.
💡 Для фильтрации агрегированного результата используй
Unit и Sales по Unit.Id = Sales.Unit_id.💡 Сначала отфильтруй продажи по времени через
WHERE.💡 Затем сгруппируй продажи по идентификатору юнита.
💡 Для фильтрации агрегированного результата используй
HAVING.Решение
SELECT u.Id
FROM Unit u
JOIN Sales s
ON s.Unit_id = u.Id
WHERE s.Sale_time > TIMESTAMP '2024-06-03 10:00:00'
GROUP BY u.Id
HAVING SUM(u.Price) > 1000;
WHERE оставляет только продажи, совершённые после 10:00.
После этого строки группируются по u.Id, а:
HAVING SUM(u.Price) > 1000
оставляет только те юниты, общая сумма продаж которых превышает 1000 рублей.