SQL: сгруппировать по последним 3 месяцам и последним 5 месяцам соответственно - PullRequest
0 голосов
/ 26 февраля 2019

На основе таблицы продаж за разные периоды времени я пытаюсь вычислить агрегированные значения за 2 разных периода времени: (1) Продажи, где дата> '2018-11-26' и (2) продажи, где дата>'2018-09-26'

create table revenue (sales float, date_time datetime) 
insert into revenue (sales,date_time) values (300, '2018-09-01')
insert into revenue (sales,date_time) values (200, '2018-10-01')
insert into revenue (sales,date_time) values (300, '2018-11-01')
insert into revenue (sales,date_time) values (400, '2019-01-01')
insert into revenue (sales,date_time) values (500, '2019-02-01')

Я видел другие решения, которые используют случай, когда для периодов времени, однако разница в этом случае состоит в том, что периоды времени не являются взаимоисключающими.

Требуемый запрос должен работать примерно так:

select sum(sales) from revenue
group by date_time where date_time > '2018-11-26',  
date_time where date_time > '2018-09-26'

1 Ответ

0 голосов
/ 26 февраля 2019

вы можете использовать union all

select 'p1' as prd , sum(sales) from revenue
where date_time >= '2018-11-26'

union all
select 'p2', sum(sales) from revenue
where date_time > '2018-09-26' 

или вы можете использовать case when

select case when date_time >= '2018-11-26' then 'p1'
              when date_time > '2018-09-26' 
              then 'p2' end as period, sum(sales) from revenue
              group by case when date_time >= '2018-11-26' then 'p1'
              when date_time > '2018-09-26' 
              then 'p2' end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...