SQL СУММА между диапазоном дат в одной таблице - PullRequest
0 голосов
/ 18 марта 2020

Я хочу sum стоимость на основе ProductId и Date.

Мой формат даты: YY/MM/DD и date Данные выглядят так:

DateFrom     DateTo         Cost     ProductId
07/12/12    | 07/12/31 |    120,5   | 1 
01/12/12    | 11/12/31 |    220 5   | 1 
01/12/12    | 11/12/31 |    120,5   | 1 
08/12/12    | 08/12/31 |    140,5   | 2 
11/12/12    | 11/12/31 |    140,5   | 2 
11/12/12    | 11/12/31 |    140,5   | 2 

Вывод, который я хочу получить, должен выглядеть следующим образом:

FirstDateFrom   LastDateTo   SumOfCostFromSameYear   ProductId
07/12/12       | 07/12/31   |   120,5              | 1  
01/12/12       | 11/12/31   |   341                | 1  
08/12/12       | 08/12/31   |   140,5              | 2  
11/12/12       | 11/12/31   |   281                | 2  

Как вы можете видеть, я хочу, чтобы в моем выводе была сумма от всех year.

Я начал писать sql:

SELECT DateFrom, DateTo, ProductId, SUM(cost) FROM CostOfSomething WHERE ...

Но я не знаю, как должно выглядеть выражение WHERE для моего scenerio

Редактировать: Создать скрипт этот стол:

create table CostOfSomething(
Id NUMBER PRIMARY KEY,
DateTo DATE,
DateFrom DATE,
Cost NUMBER(6,2),
ProductId NUMBER REFERENCES product(ProductId)
);

1 Ответ

1 голос
/ 18 марта 2020
select min(DateFrom) "FirstDateFrom"
       , max(DateTo) "LastDateTo"
       , sum(Cost) "SumOfCostFromSameYear"
       , min(ProductId) "ProductId"
from CostOfSomething    
group by to_char(DateFrom, 'yy')
order by to_char(DateFrom, 'yy') -- you do not need to have order by

Вот демоверсия

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...