oracle求日累計數據


1、需求:

     有一表數據accu,有日、業務月、數量三個字段,業務月是指上個月28號至當月27號。

     通過日累計求和得到某一天的業務月累計數量。例如 20211001 這一天的月累計是20210928-20211001的日數量求和得到的。

2、表數據

create table accu
(
    day_code varchar2(10),
    buss_month varchar2(10),
    fnum int
)
insert into accu values('20210927','202109',1);
insert into accu values('20210928','202110',2);
insert into accu values('20210927','202109',2);
insert into accu values('20210929','202110',3);
insert into accu values('20210930','202110',4);
insert into accu values('20211001','202110',5);

 

 3、利用over (partition by ... order by ... )求月累計數量

select day_code,buss_month,fnum,
       sum(fnum) over (partition by buss_month order by day_code) m_fnum
from accu
order by day_code

 

 

 從結果中發現有兩個27號的數據,通過distinct也無法篩選掉,因為fnum是不同的,所以在累計之前通過group by將同一天的數據求和

select day_code,buss_month,fnum,
       sum(fnum) over (partition by buss_month order by day_code) m_fnum
from (select day_code,buss_month,sum(fnum) fnum from accu group by day_code,buss_month)
order by day_code

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM