Как составить условие - результат за несколько месяцев по состоянию на заданный день месяца?

Необходимо получить количество строк за 3 последних месяца. Количество в каждом месяце до дня равного сегодняшнему дню. Например, если сегодня 24.08, то с 1-го по 24-е каждого месяца.

Пример ожидаемого результата:

Июнь   | 1000
Июль   | 800
Август | 900

Где Июнь - с 1.06 по 24.06, Июль - с 1.07 по 24.07, Август - 1.08 по тек. дату (24.08).


Ответы (1 шт):

Автор решения: 0xdb

Например, вот так:

with t (qty, dt) as (
    select 10, date'2015-01-01'+level-1 
    from dual connect by level<=3650 
)
select to_char (trunc (dt, 'mm'), 'Mon') month, count (*) count, sum (qty) sum 
from t
where dt between add_months (sysdate, -3) and sysdate
and extract (day from dt) <= extract (day from sysdate) 
group by trunc (dt, 'mm')
order by trunc (dt, 'mm')
/

Результат:

MONTH             COUNT        SUM
------------ ---------- ----------
Jun                  24        240
Jul                  24        240
Aug                  24        240
→ Ссылка