sum() over()求累加数据

使用函数sum() over()函数求累加数据

          SELECT 
                dd
                ,f_capital_no
                ,sum(t.f_payout_amount) over(partition by f_capital_no order by dd) f_payout_amount
                ---以日期累加产品编号排序求金额的日累加数据
          FROM
          (  
                select
                      df.dd
                      ,df.f_capital_no
                      ,if(s.f_payout_amount is null,0,s.f_payout_amount) f_payout_amount
                      ---因为这里的金额不是每天都有,所以我们要对不存在金额的日期做0
                      ---业务方特殊需要,为了数据看起来更加立体,单纯求累加数据可以不加
                from tmp.yzy_df df
                left join
                (
                  select
                      substr(f_pay_time,1,10) dd
                      ,f_capital_no
                      ,sum(f_payout_amount) f_payout_amount
                      ---因为数据的最细时间是到时分秒,故我们应该先把金额聚合成粒度为天
                  from odsdb_gmcf_lmc.t_lmc_payout_single
                  WHERE  f_status='6' and f_capital_no like 'C51%'
                  group by substr(f_pay_time,1,10),f_capital_no
                )s on df.dd=s.dd and df.f_capital_no=s.f_capital_no

你可能感兴趣的:(hive学习)