select a.prov_nm,   --省份
      f.year_trade_amt, ---年交易额
      a.year_fee_amt,  ---年收入
      f.bm_trade_amt/e.before_month_days bm_avg_amt, --上月日均交易额
      a.bm_fee_amt/e.before_month_days bm_avg_fee,--上月日均收入
      f.day_trade_amt,a.day_fee_amt,
      a.day_ysr_trade_amt,
      a.bm_ysr_trade_amt/e.before_month_days bm_ysr_avg_amt,
      b.bm_equity_amt/e.before_month_days bm_avg_equity_amt,
      c.day_equity_amt,
      d.yj_cnt,
      e.day_new_cnt,
      e.new30_cnt,
      e.new30_trans_cnt
from 
    (SELECT b.prov_nm,
       --sum(a.year_trade_amt)/1000000.000 year_trade_amt,--单位:万元
       sum(a.year_fee_amt)/1060000.0000 year_fee_amt,       
       --sum(a.bm_trade_amt)/1000000.000 bm_trade_amt,
       sum(a.bm_fee_amt)/1060000.0000 bm_fee_amt,
       --sum(a.day_trade_amt)/1000000.000 day_trade_amt,
       sum(a.day_fee_amt)/1060000.0000 day_fee_amt,
       sum(a.day_ysr_trade_amt)/1000000.0000 day_ysr_trade_amt,
       sum(a.bm_ysr_trade_amt)/1000000.0000 bm_ysr_trade_amt
    FROM
    (SELECT fee_party, 
           --sum(cast(t.trade_amt AS bigint)) year_trade_amt,
           sum(cast(t.fee_amt AS bigint)) year_fee_amt,
           --sum(case when substr(cast(t.bdpms_etl_time as varchar),1,6)=regexp_replace(substr(cast(date_add('month',-1,current_date) as varchar),1,7),'-','') then cast(trade_amt as bigint)  end)  bm_trade_amt,
           sum(case when substr(cast(t.bdpms_etl_time as varchar),1,6)=regexp_replace(substr(cast(date_add('month',-1,date_add('day',-1,current_date)) as varchar),1,7),'-','') then cast(fee_amt   as bigint)  end)  bm_fee_amt,
           --sum(case when substr(cast(t.bdpms_etl_time as varchar),1,8)=regexp_replace(substr(cast(date_add('day',-1,current_date) as varchar),1,10),'-','')  then cast(trade_amt as bigint)  end)  day_trade_amt,
           sum(case when substr(cast(t.bdpms_etl_time as varchar),1,8)=regexp_replace(substr(cast(date_add('day',-1,current_date) as varchar),1,10),'-','')  then cast(fee_amt   as bigint)  end)  day_fee_amt,
           sum(case when substr(cast(t.bdpms_etl_time as varchar),1,8)=regexp_replace(substr(cast(date_add('day',-1,current_date) as varchar),1,10),'-','')  and FEE_amt<>'0' then cast(trade_amt as bigint)  end)  day_ysr_trade_amt,
           sum(case when substr(cast(t.bdpms_etl_time as varchar),1,6)=regexp_replace(substr(cast(date_add('month',-1,date_add('day',-1,current_date)) as varchar),1,7),'-','') and FEE_amt<>'0' then cast(trade_amt as bigint)  end)  bm_ysr_trade_amt
          FROM ods_feecr_bdpms.t_fee_calculation_zengliang t
          WHERE t.bdpms_etl_time >= 20210101000000
            AND t.bdpms_etl_time < 20220101000000
            AND t.incr_col='UPDATED_AT'
            AND t.fee_flag = 'SUCCESS'
            AND t.usable_flag = 'USABLE'
            AND t.solution_no IN ( 'PS1' ,
                                   'PS11018' ,
                                   'PS11210' ,
                                   'PS11666' ,
                                   'PS11286' ,
                                   'PS11208' ,
                                   'PS10602' ,
                                   'PS10404' ,
                                   'PS10402' ,
                                   'PS11700' ,
                                   'PS11256' ,
                                   'PS11024' ,
                                   'PS10418' ,
                                   'PS11850' ,
                                   'PS11848')
          GROUP BY fee_party)
          a
       LEFT JOIN
         (SELECT distinct merchant_id,
                 prov_nm
          FROM cdm_dsj.dim_merchant_basic_info_df
          WHERE day_id=cast(date_add('day',-1,current_date) as varchar)) b 
       ON a.fee_party=b.merchant_id
       GROUP BY b.prov_nm) 
a 

left join
    (select b.prov_nm,sum(a.equity_use_amt)/1000000.0000 bm_equity_amt
    from
        (select merchant_id,sum(equity_use_amt) equity_use_amt
        from cdm_dsj.dwd_marketing_use_di
         where substr(day_id,1,7)=substr(cast(date_add('month',-1,date_add('day',-1,current_date)) as varchar),1,7)
         --and dept_cd='20022'
         AND solution_cd in
         ('PS1' ,
          'PS11018' ,
          'PS11210' ,
          'PS11666' ,
          'PS11286' ,
          'PS11208' ,
          'PS10602' ,
          'PS10404' ,
          'PS10402' ,
          'PS11700' ,
          'PS11256' ,
          'PS11024' ,
          'PS10418' ,
          'PS11850' ,
          'PS11848')
         GROUP BY merchant_id) a 
    LEFT JOIN
         (SELECT merchant_id,
                 prov_nm
          FROM cdm_dsj.dim_merchant_basic_info_df
          WHERE day_id=cast(date_add('day',-1,current_date) as varchar)) b
    on a.merchant_id=b.merchant_id
      GROUP BY b.prov_nm) 
b 

on a.prov_nm=b.prov_nm
left join
    (select b.prov_nm,sum(a.equity_use_amt)/1000000.0000 day_equity_amt
    from
        (select merchant_id,sum(equity_use_amt) equity_use_amt
        from cdm_dsj.dwd_marketing_use_di
         where day_id=cast(date_add('day',-1,current_date) as varchar)
         --and dept_cd='20022'
         AND solution_cd in
         ('PS1' ,
          'PS11018' ,
          'PS11210' ,
          'PS11666' ,
          'PS11286' ,
          'PS11208' ,
          'PS10602' ,
          'PS10404' ,
          'PS10402' ,
          'PS11700' ,
          'PS11256' ,
          'PS11024' ,
          'PS10418' ,
          'PS11850' ,
          'PS11848')
         GROUP BY merchant_id) a 
    LEFT JOIN
         (SELECT merchant_id,
                 prov_nm
          FROM cdm_dsj.dim_merchant_basic_info_df
          WHERE day_id=cast(date_add('day',-1,current_date) as varchar)) b
    on a.merchant_id=b.merchant_id
      GROUP BY b.prov_nm) 
c 

on a.prov_nm=c.prov_nm


left join
    (select prov_nm, count(distinct fee_party) yj_cnt
    from
        (select b.prov_nm,a.fee_party
        from 
        (SELECT fee_party,
                     sum(cast(t.trade_amt AS bigint)) year_trade_amt
              FROM ods_feecr_bdpms.t_fee_calculation_zengliang t
              WHERE t.bdpms_etl_time >=20210101000000
                AND t.incr_col='UPDATED_AT'
                AND t.fee_flag = 'SUCCESS'
                AND t.usable_flag = 'USABLE'
                AND t.solution_no IN ( 'PS1' ,
                                       'PS11018' ,
                                       'PS11210' ,
                                       'PS11666' ,
                                       'PS11286' ,
                                       'PS11208' ,
                                       'PS10602' ,
                                       'PS10404' ,
                                       'PS10402' ,
                                       'PS11700' ,
                                       'PS11256' ,
                                       'PS11024' ,
                                       'PS10418' ,
                                       'PS11850' ,
                                       'PS11848' )
        GROUP BY fee_party
        order by year_trade_amt desc limit 10000) a 
        LEFT JOIN
         (SELECT merchant_id,
                 prov_nm
          FROM cdm_dsj.dim_merchant_basic_info_df
          WHERE day_id=cast(date_add('day',-1,current_date) as varchar)) b
          on a.fee_party=b.merchant_id
          where a.fee_party not in
          (SELECT fee_party                     
              FROM ods_feecr_bdpms.t_fee_calculation_zengliang t
              WHERE t.bdpms_etl_time =cast(concat(regexp_replace(cast(date_add('day',-1,CURRENT_DATE) as varchar),'-',''),'000000') as bigint)
                AND t.incr_col='UPDATED_AT'
                AND t.fee_flag = 'SUCCESS'
                AND t.usable_flag = 'USABLE'
                AND t.solution_no IN ( 'PS1' ,
                                       'PS11018' ,
                                       'PS11210' ,
                                       'PS11666' ,
                                       'PS11286' ,
                                       'PS11208' ,
                                       'PS10602' ,
                                       'PS10404' ,
                                       'PS10402' ,
                                       'PS11700' ,
                                       'PS11256' ,
                                       'PS11024' ,
                                       'PS10418' ,
                                       'PS11850' ,
                                       'PS11848' )
         )
          )
          group by prov_nm
         )
d 
on a.prov_nm=d.prov_nm
left join
(SELECT A.prov_nm,
       cast(substr(cast(date_add('day',-1,cast(concat(substr(cast(date_add('day',-1,current_date) as varchar),1,7),'-01')as date))as varchar),9,10)as bigint) before_month_days,
          count(DISTINCT a.merchant_id) new30_cnt,
          count(DISTINCT b.merchant_id) new30_trans_cnt,
          count( case when create_tm=cast(date_add('day',-1,current_date) as varchar) then A.merchant_id end ) day_new_cnt
   FROM
     (SELECT prov_nm,
             merchant_id,
             substr(cast(create_tm as varchar),1,10)  create_tm
      FROM cdm_dsj.dim_merchant_basic_info_df
      WHERE create_tm>=cast(date_add('day',-30,current_date) as varchar)
        AND day_id=cast(date_add('day',-1,current_date) as varchar)
       and      stat_nm='可用'
       and owned_group_cd='11006'
     and merchant_id in 
(select distinct merchant_id from cdm_dsj.dwd_merchant_stock_agmt_df
where day_id=cast(date_add('day',-1,current_date)as varchar)
and solution_cd in('PS1',
'PS11018',
'PS11210',
'PS11666',
'PS11286',
'PS11208',
'PS10602',
'PS10404',
'PS10402',
'PS11700',
'PS11256',
'PS11024',
'PS10418',
'PS11850',
'PS11848'
))       ) a
   LEFT JOIN
     (SELECT DISTINCT merchant_id
      FROM dm_o2o_bdpms.pmt_merchant_tran_o2o
      WHERE day_id>=cast(date_add('day',-30,CURRENT_DATE)AS varchar))  b ON a.merchant_id=b.merchant_id
   GROUP BY prov_nm
      )
      e 
      on a.prov_nm=e.prov_nm
left join
   (select prov_nm, sum(a.year_trade_amt)/1000000.0000 year_trade_amt,
                      sum(a.bm_trade_amt)/1000000.0000  bm_trade_amt,
                     sum(a.day_trade_amt)/1000000.0000 day_trade_amt
    from 
    (select merchant_id,
            sum(case when substr(day_id,1,4)='2021' then trans_amt end) year_trade_amt,
            sum(case when substr(day_id,1,7)=substr(cast(date_add('month',-1,date_add('day',-1,current_date))as varchar),1,7) then trans_amt end) bm_trade_amt,
            sum(case when day_id=cast(date_add('day',-1,current_date)as varchar) then trans_amt end) day_trade_amt
    from dm_o2o_bdpms.pmt_merchant_tran_o2o
    where day_id>='2021-01-01'
    group by merchant_id) a 
    left join
    (select merchant_id,prov_nm from cdm_dsj.dim_merchant_basic_info_df
    where day_id=cast(date_add('day',-1,current_date)as varchar))b 
    on a.merchant_id=b.merchant_id
    group by b.prov_nm) f 
    on a.prov_nm=f.prov_nm