mysql 累計值計算
阿新 • • 發佈:2017-05-18
現在 分析 select hdr blog pan spa pre eid
由於mysql沒有很好的支持分析函數,現在以SUM分析函數為例,做一下mysql的按日累計值計算
mysql 累計計算 select DateID TRAN_DT, REGI_CH REGI_CH, TRAN_CH TRAN_CH, IFNULL(DRAW_CT, 0) DRAW_CT, round(IFNULL(DRAW_AMT, 0),2) DRAW_AMT, ALL_DRAW_CT, round(ALL_DRAW_AMT, 2) ALL_DRAW_AMT from (select d.DateID, d.REGI_CH REGI_CH, d.TRAN_CH TRAN_CH, DRAW_CT, DRAW_AMT, @rownum := @rownum + 1, IF(@REGI_CH = d.REGI_CH and @TRAN_CH = d.TRAN_CH, @ALL_DRAW_CT := @ALL_DRAW_CT + ifnull(b.DRAW_CT, 0), @ALL_DRAW_CT := b.DRAW_CT) AS ALL_DRAW_CT, IF(@REGI_CH = d.REGI_CH and @TRAN_CH = d.TRAN_CH, @ALL_DRAW_AMT := @ALL_DRAW_AMT + ifnull(b.DRAW_AMT, 0), @ALL_DRAW_AMT := b.DRAW_AMT) AS ALL_DRAW_AMT, IF(@REGI_CH = d.REGI_CH and @TRAN_CH = d.TRAN_CH, @rank := @rank + 1, @rank := 1) AS rank, @REGI_CH := d.REGI_CH, @TRAN_CH := d.TRAN_CH FROM (select dateid, REGI_CH, TRAN_CH from (select d.dateid, REGI_CH, TRAN_CH, TRAN_DT from (select TRAN_DT, REGI_CH, TRAN_CH, IF(@REGI_CH = b.REGI_CH and @TRAN_CH = b.TRAN_CH, @rank := @rank + 1, @rank := 1) AS rank, @REGI_CH := b.REGI_CH, @TRAN_CH := b.TRAN_CH FROM (select TRANDT TRAN_DT, u.REGI_CH, TRANCH TRAN_CH from ods_bd_withdraw t join ods_bd_user_person u on u.member_cd = t.member_cd where trandt > ‘20150515‘ and trandt < ‘${trandate}‘ group by trandt, u.REGI_CH, TRANCH order by u.REGI_CH, TRANCH, trandt) b, (SELECT @REGI_CH := NULL, @TRAN_CH := null, @rank := 0) c having rank = 1) n join dim_date d on 1 = 1 where d.dateid > ‘20150515‘ and d.dateid < ‘${trandate}‘ ) f where f.TRAN_DT <= dateid order by REGI_CH, TRAN_CH, dateid) d left join (select TRANDT TRAN_DT, u.REGI_CH, TRANCH TRAN_CH, count(*) DRAW_CT, sum(TRANAM) DRAW_AMT from ods_bd_withdraw t join ods_bd_user_person u on u.member_cd = t.member_cd where trandt > ‘20150515‘ and trandt < ‘${trandate}‘ group by trandt, u.REGI_CH, TRANCH order by u.REGI_CH, TRANCH, trandt) b on b.TRAN_DT = d.DateID and d.REGI_CH = b.REGI_CH and d.TRAN_CH = b.TRAN_CH join (SELECT @rownum := 0, @REGI_CH := NULL, @TRAN_CH := null, @ALL_DRAW_CT := 0, @ALL_DRAW_AMT := 0, @rank := 0) c on 1 = 1 order by dateid) t
mysql 累計值計算