Найди id юнитов, которые были проданы на сумму более 1000 рублей после 10:00 сегодняшнего дня. > "2024-06-03 10:00"

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 рублей.