标题 窗口函数的应用案例
insert overwrite ads_self_special_sale_detail
select
a2.fourth_daim as COMPNO,
a2.fourth_name as COMPNM,
a2.third_daim as ORG3NO,
a2.third_name as ORG3NM,
a2.second_daim as ORG2NO,
a2.second_name as ORG2NM,
'0' as shop_code1,
'0' as shop_name1,
a1.ORGNO as shop_code2,
a2.quanc as shop_name2,
a1.CHANNO,
if(CHANNO='ZY','自营','购物中心') as CHANNM,
a4.gouzzl as house_type,
'0' as remarks,
a5.sales_num,
a5.sales_num_avg/(if(substr(a1.accmm,1,4)>substr(nvl(a4.kaiyrq_day,'0000'),1,4),cast(substr(a1.accmm,5,2) as int),if(substr(a1.accmm,5,2)>substr(a4.kaiyrq_day,5,2),cast(substr(a1.accmm,5,2) as int)-cast(substr(a4.kaiyrq_day,5,2) as int),cast(substr(a1.accmm,5,2) as int)))) as sales_num_avg,
a5.BSAREA,
a5.areas_avg/(if(substr(a1.accmm,1,4)>substr(nvl(a4.kaiyrq_day,'0000'),1,4),cast(substr(a1.accmm,5,2) as int),if(substr(a1.accmm,5,2)>substr(a4.kaiyrq_day,5,2),cast(substr(a1.accmm,5,2) as int)-cast(substr(a4.kaiyrq_day,5,2) as int),cast(substr(a1.accmm,5,2) as int)))) as areas_avg,
if(substr(a1.accmm,1,4)>substr(nvl(a4.kaiyrq_day,'0000'),1,4),cast(substr(a1.accmm,5,2) as int),if(substr(a1.accmm,5,2)>substr(a4.kaiyrq_day,5,2),cast(substr(a1.accmm,5,2) as int)-cast(substr(a4.kaiyrq_day,5,2) as int),cast(substr(a1.accmm,5,2) as int))) as months,
a1.SAAM2,
sum(a1.SAAM2) over (partition by a1.ORGNO,substr(a1.accmm,1,4) order by a1.ORGNO,substr(a1.accmm,1,4),substr(a1.accmm,5,2) ) as SAAM2_total,
a1.SMAM,
sum(a1.SMAM) over (partition by a1.ORGNO,substr(a1.accmm,1,4) order by a1.ORGNO,substr(a1.accmm,1,4),substr(a1.accmm,5,2) ) as SMAM_total_tax,
sum(a1.SMAM) over (partition by a1.ORGNO,substr(a1.accmm,1,4) order by a1.ORGNO,substr(a1.accmm,1,4),substr(a1.accmm,5,2) )/a6.VAT as SMAM_total_notax,
a1.SACTAM,
sum(a1.SACTAM) over (partition by a1.ORGNO,substr(a1.accmm,1,4) order by a1.ORGNO,substr(a1.accmm,1,4),substr(a1.accmm,5,2) ) as SACTAM_total_tax,
sum(a1.SACTAM) over (partition by a1.ORGNO,substr(a1.accmm,1,4) order by a1.ORGNO,substr(a1.accmm,1,4),substr(a1.accmm,5,2) )/a6.VAT as SACTAM_total_notax,
a1.GPROFIT_notax,
sum(a1.GPROFIT_notax) over (partition by a1.ORGNO,substr(a1.accmm,1,4) order by a1.ORGNO,substr(a1.accmm,1,4),substr(a1.accmm,5,2) ) as GPROFIT_total_notax,
a1.REVENUE as GPROFIT_rate,
sum(a1.REVENUE) over (partition by a1.ORGNO,substr(a1.accmm,1,4) order by a1.ORGNO,substr(a1.accmm,1,4),substr(a1.accmm,5,2) ) as GPROFIT_total_rate,
a3.total_expenses,
sum(a3.total_expenses) over (partition by a1.ORGNO,substr(a1.accmm,1,4) order by a1.ORGNO,substr(a1.accmm,1,4),substr(a1.accmm,5,2) ) as total_expenses_total,
a3.expenses_other,
sum(a3.expenses_other) over (partition by a1.ORGNO,substr(a1.accmm,1,4) order by a1.ORGNO,substr(a1.accmm,1,4),substr(a1.accmm,5,2) ) as expenses_other_total,
a3.expenses_rent,
sum(a3.expenses_rent) over (partition by a1.ORGNO,substr(a1.accmm,1,4) order by a1.ORGNO,substr(a1.accmm,1,4),substr(a1.accmm,5,2) ) as expenses_rent_total,
a3.expenses_fitup,
sum(a3.expenses_fitup) over (partition by a1.ORGNO,substr(a1.accmm,1,4) order by a1.ORGNO,substr(a1.accmm,1,4),substr(a1.accmm,5,2) ) as expenses_fitup_total,
a1.GPROFIT_notax-a3.total_expenses as GALOAM,
sum(a1.GPROFIT_notax-a3.total_expenses) over (partition by a1.ORGNO,substr(a1.accmm,1,4) order by a1.ORGNO,substr(a1.accmm,1,4),substr(a1.accmm,5,2) ) as GALOAM_total,
a3.yj_total_expenses,
sum(a3.yj_total_expenses) over (partition by a1.ORGNO,substr(a1.accmm,1,4) order by a1.ORGNO,substr(a1.accmm,1,4),substr(a1.accmm,5,2) ) as yj_total_expenses_total,
a3.yj_expenses_rent,
sum(a3.yj_expenses_rent) over (partition by a1.ORGNO,substr(a1.accmm,1,4) order by a1.ORGNO,substr(a1.accmm,1,4),substr(a1.accmm,5,2) ) as yj_expenses_rent_total,
a3.other_expenses_gz,
sum(a3.other_expenses_gz) over (partition by a1.ORGNO,substr(a1.accmm,1,4) order by a1.ORGNO,substr(a1.accmm,1,4),substr(a1.accmm,5,2) ) as other_expenses_gz_total,
a3.other_expenses_zj,
sum(a3.other_expenses_zj) over (partition by a1.ORGNO,substr(a1.accmm,1,4) order by a1.ORGNO,substr(a1.accmm,1,4),substr(a1.accmm,5,2) ) as other_expenses_zj_total,
a3.other_expenses_sd,
sum(a3.other_expenses_sd) over (partition by a1.ORGNO,substr(a1.accmm,1,4) order by a1.ORGNO,substr(a1.accmm,1,4),substr(a1.accmm,5,2) ) as other_expenses_sd_total,
a3.other_expenses_qt,
sum(a3.other_expenses_qt) over (partition by a1.ORGNO,substr(a1.accmm,1,4) order by a1.ORGNO,substr(a1.accmm,1,4),substr(a1.accmm,5,2) ) as other_expenses_qt_total,
a1.GPROFIT_notax-a3.yj_total_expenses as yj_GALOAM,
sum(a1.GPROFIT_notax-a3.yj_total_expenses) over (partition by a1.ORGNO,substr(a1.accmm,1,4) order by a1.ORGNO,substr(a1.accmm,1,4),substr(a1.accmm,5,2) ) as yj_GALOAM_total,
sum(a1.GPROFIT_notax-a3.yj_total_expenses) over (partition by a1.ORGNO,substr(a1.accmm,1,4) order by a1.ORGNO,substr(a1.accmm,1,4),substr(a1.accmm,5,2) )/(sum(a1.SMAM) over (partition by a1.ORGNO,substr(a1.accmm,1,4) order by a1.ORGNO,substr(a1.accmm,1,4),substr(a1.accmm,5,2) )) as yj_GALOAM_rate,
sum(a1.SMAM) over (partition by a1.ORGNO,substr(a1.accmm,1,4) order by a1.ORGNO,substr(a1.accmm,1,4),substr(a1.accmm,5,2) )/if(substr(a1.accmm,1,4)>substr(nvl(a4.kaiyrq_day,'0000'),1,4),cast(substr(a1.accmm,5,2) as int),if(substr(a1.accmm,5,2)>substr(a4.kaiyrq_day,5,2),cast(substr(a1.accmm,5,2) as int)-cast(substr(a4.kaiyrq_day,5,2) as int),cast(substr(a1.accmm,5,2) as int)))/(a5.sales_num_avg/(if(substr(a1.accmm,1,4)>substr(nvl(a4.kaiyrq_day,'0000'),1,4),cast(substr(a1.accmm,5,2) as int),if(substr(a1.accmm,5,2)>substr(a4.kaiyrq_day,5,2),cast(substr(a1.accmm,5,2) as int)-cast(substr(a4.kaiyrq_day,5,2) as int),cast(substr(a1.accmm,5,2) as int))))) as human_effect,
sum(a1.SMAM) over (partition by a1.ORGNO,substr(a1.accmm,1,4) order by a1.ORGNO,substr(a1.accmm,1,4),substr(a1.accmm,5,2) )/if(substr(a1.accmm,1,4)>substr(nvl(a4.kaiyrq_day,'0000'),1,4),cast(substr(a1.accmm,5,2) as int),if(substr(a1.accmm,5,2)>substr(a4.kaiyrq_day,5,2),cast(substr(a1.accmm,5,2) as int)-cast(substr(a4.kaiyrq_day,5,2) as int),cast(substr(a1.accmm,5,2) as int)))/(a5.areas_avg/(if(substr(a1.accmm,1,4)>substr(nvl(a4.kaiyrq_day,'0000'),1,4),cast(substr(a1.accmm,5,2) as int),if(substr(a1.accmm,5,2)>substr(a4.kaiyrq_day,5,2),cast(substr(a1.accmm,5,2) as int)-cast(substr(a4.kaiyrq_day,5,2) as int),cast(substr(a1.accmm,5,2) as int))))) as areas_effect,
a4.kaiyrq,
a4.guanbrq,
a1.accmm
from
(select ORGNO,CHANNO,accmm,sum(SAAM2) as SAAM2,sum(SMAM) as SMAM,sum(SACTAM) as SACTAM,sum(GPROFIT_NOTAX) as GPROFIT_notax,sum(REVENUE) as REVENUE from ${youngor_cdm}.fct_fi_settle_di where ds<=substr('${bizdate}',1,6) and orgtyno='SHOP' and CHANNO in ('ZY','GW') and substr(accmm,1,4)>=2018 group by ORGNO,CHANNO,accmm ) a1
left join
(select code,quanc,second_daim,second_name,third_daim,third_name,fourth_daim,fourth_name from ${youngor_ods}.ods_organization_dimension
where ds='${bizdate}' and organization_leix='销售') a2
on a1.ORGNO=a2.code
left join
(select
b1.orgno,
b1.accmm,
b1.total_expenses,
b1.expenses_other,
b1.expenses_rent,
b1.expenses_fitup,
(b1.expenses_other+b1.expenses_fitup+b1.yj_expenses_rent) as yj_total_expenses,
b1.yj_expenses_rent,
b1.other_expenses_gz,
b1.other_expenses_zj,
b1.other_expenses_sd,
(b1.expenses_other-b1.other_expenses_gz-b1.other_expenses_zj-b1.other_expenses_sd) as other_expenses_qt
from
(select
b.orgno,
b.accmm,
sum(total_expenses) as total_expenses,
sum(expenses_other) as expenses_other,
sum(expenses_rent) as expenses_rent,
sum(expenses_fitup) as expenses_fitup,
sum(yj_expenses_rent) as yj_expenses_rent,
sum(other_expenses_gz) as other_expenses_gz,
sum(other_expenses_zj) as other_expenses_zj,
sum(other_expenses_sd) as other_expenses_sd
from
(
select
orgno,
accmm,
expensetype,
if(expensetype in ('其他','租赁费_现金制','装修费'),sum(current_amount),0) as total_expenses ,
if(expensetype in ('其他'),sum(current_amount),0) as expenses_other ,
if(expensetype in ('租赁费_现金制'),sum(current_amount),0) as expenses_rent ,
if(expensetype in ('装修费'),sum(current_amount),0) as expenses_fitup,
if(expensetype in ('租赁费_应计制'),sum(current_amount),0) as yj_expenses_rent,
if(expensetype in ('工资'),sum(current_amount),0) as other_expenses_gz,
if(expensetype in ('折旧'),sum(current_amount),0) as other_expenses_zj,
if(expensetype in ('水电费'),sum(current_amount),0) as other_expenses_sd
from ${youngor_cdm}.fct_fi_expense_category_df where ds <=substr('${bizdate}',1,6) and orgno is not null group by orgno,accmm,expensetype
) b group by b.orgno,b.accmm
) b1
) a3 on a1.ORGNO=a3.orgno and a1.accmm=a3.accmm
left join
(select daim,gouzzl,substr(kaiyrq,1,10) as kaiyrq,substr(guanbrq,1,10) as guanbrq,kaiyrq_day from ${ld_fuzhuang}.dim_pub_cha_shop where ds='${bizdate}'
) a4 on a1.ORGNO=a4.daim
left join
(select
a.ORGNO,
a.accmm,
a.EMPLFIQT as sales_num,
sum(a.EMPLFIQT) over (partition by a.ORGNO,substr(a.accmm,1,4) order by a.ORGNO,substr(a.accmm,1,4),substr(a.accmm,5,2) ) as sales_num_avg,
a.BSAREA,
sum(a.BSAREA) over (partition by a.ORGNO,substr(a.accmm,1,4) order by a.ORGNO,substr(a.accmm,1,4),substr(a.accmm,5,2) ) as areas_avg
from (select ORGNO,accmm,sum(EMPLFIQT) as EMPLFIQT,sum(BSAREA) as BSAREA from ${youngor_ods}.s_SMA_ORG_ACCMM where ds<=substr('${bizdate}',1,6) group by ORGNO,accmm ) a
) a5 on a1.ORGNO=a5.ORGNO and a1.accmm=a5.accmm
left join
(select ORGNO,accmm,VAT from ${youngor_cdm}.fct_fi_settle_di where ds<=substr('${bizdate}',1,6) and orgtyno='SHOP' and CHANNO in ('ZY','GW') and substr(accmm,1,4)>=2018 group by ORGNO,accmm,VAT
) a6 on a1.ORGNO=a6.ORGNO and a1.accmm=a6.accmm;