Как подсчитать за последние два месяца с разницей в oracle - PullRequest
0 голосов
/ 13 февраля 2020

Как подсчитать за последние два месяца с их разницей.

Предположим: у меня есть записи за последние два года

input:

Date           |    sales   
01-JAn- 2019   |    25
29-jan- 2019   |    90
30-Jan-2019    |    45
25-Feb- 2019   |    78
26_feb_2019    |    40
-------------------------------------------------------------   

Ouput

Date          |      Count      |    %Difference

JAN           |    160          |   42 (%Difference)

Feb           |    118          |

1 Ответ

1 голос
/ 13 февраля 2020

Похоже, вы хотите:

select to_char(date, 'YYYY-MM'), sum(count),
       (sum(count) - lag(sum(count)) over (partition by min(date)) as difference
from t
group by to_char(date, 'YYYY-MM')
order by min(date) desc
fetch first 2 rows only;

Обратите внимание, это будет включать разницу за второй месяц, если есть больше исторических данных. Это похоже на «особенность». Но вы можете решить эту проблему путем агрегации и последующей фильтрации с помощью предложения where:

select yyyymm,
       (cnt - lag(cnt) over (partition by yyyymm) as difference
from (select to_char(date, 'YYYY-MM') as yyyymm, sum(count) as cnt,
             row_number() over (order by min(date) desc) as seqnum
      from t
      group by to_char(date, 'YYYY-MM')
     ) yc
where sequm <= 2
order by yyyymm desc
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...