【无标题】

本文介绍了如何使用groupingsets高阶聚合函数对交易数据进行多级别汇总,包括按年、季度、月、周及不同机构层级进行统计,涉及正向、负向交易笔数、金额和净交易金额等多个关键指标,以实现全面的交易分析和监控。
摘要由CSDN通过智能技术生成

grouping sets 高阶聚合函数使用

先对分组字段判空:

insert overwrite table  org_judge
select
 nvl(org_one_code,'-')	                  --省机构编号	
,nvl(org_two_code,'-')	                  --地市机构编号
,nvl(org_three_code,'-')	              --区县机构编号
,nvl(org_four_code,'-')	                  --网点编号
,posi_trade_acc                            --正向交易笔数
,posi_trade_amt                            --正向交易额
,nega_trade_acc                            --负向交易笔数
,nega_trade_amt                            --负向交易额 
,net_trade_amt                             --净交易金额
,trade_date                               --交易日期
,internal_shop_code
from dws_trade_merc_td 
insert overwrite table  agent_judge
select
 nvl(agent.four_agent_code,'-')	                       --所属四级服务商编号
,nvl(agent.three_agent_code,'-')                        --所属三级服务商编号
,nvl(agent.two_agent_code,'-')	                       --所属二级服务商编号
,nvl(agent.one_agent_code,'-')	                       --所属一级服务商编号
,posi_trade_acc                                        --正向交易笔数
,posi_trade_amt                                        --正向交易额
,nega_trade_acc                                        --负向交易笔数
,nega_trade_amt                                        --负向交易额 
,net_trade_amt                                         --净交易金额
,internal_shop_code                                    --内部商户号
,trade_date                                           --交易日期
from  dws_trade_merc_td agent 

使用高阶聚合函数:

insert overwrite table dws_trade_date_org_td
select
    dt.date_year                                  --年
   ,dt.date_ym                                    --年月
   ,dt.date_yq                                    --年季度
   ,dt.date_yw                                    --年周
   ,merc.org_one_code	                           --省机构编号	
   ,merc.org_two_code	                           --地市机构编号
   ,merc.org_three_code	                            --区县机构编号
   ,merc.org_four_code	                           --网点编号
   ,sum(merc.posi_trade_acc)	                   --正向交易笔数
   ,sum(merc.posi_trade_amt)	                   --正向交易额	  
   ,sum(merc.nega_trade_acc)	                   --负向交易笔数 
   ,sum(merc.nega_trade_amt)	                   --负向交易额  
   ,sum(merc.net_trade_amt)                       --净交易金额 
   ,count(distinct merc.internal_shop_code)       --商户数
from dim_date dt  
join org_judge  merc   
on dt.date_ymd  = merc.trade_date
group by 
 dt.date_year                  --年
,dt.date_ym                    --年月
,dt.date_yq                    --年季度
,dt.date_yw                    --年周
,merc.org_one_code             --省机构编号	
,merc.org_two_code	           --地市机构编号	
,merc.org_three_code	       --区县机构编号	
,merc.org_four_code        
grouping sets(
(dt.date_year,merc.org_one_code) 
,(dt.date_year,merc.org_one_code,merc.org_two_code)
,(dt.date_year,merc.org_one_code,merc.org_two_code,merc.org_three_code)
,(dt.date_year,merc.org_one_code,merc.org_two_code,merc.org_three_code,merc.org_four_code)
,(dt.date_yq,merc.org_one_code) 
,(dt.date_yq,merc.org_one_code,merc.org_two_code)
,(dt.date_yq,merc.org_one_code,merc.org_two_code,merc.org_three_code)
,(dt.date_yq,merc.org_one_code,merc.org_two_code,merc.org_three_code,merc.org_four_code)
,(dt.date_ym,merc.org_one_code) 
,(dt.date_ym,merc.org_one_code,merc.org_two_code)
,(dt.date_ym,merc.org_one_code,merc.org_two_code,merc.org_three_code)
,(dt.date_ym,merc.org_one_code,merc.org_two_code,merc.org_three_code,merc.org_four_code)
,(dt.date_yw,merc.org_one_code) 
,(dt.date_yw,merc.org_one_code,merc.org_two_code)
,(dt.date_yw,merc.org_one_code,merc.org_two_code,merc.org_three_code)
,(dt.date_yw,merc.org_one_code,merc.org_two_code,merc.org_three_code,merc.org_four_code)
)
insert overwrite table  dws_trade_date_agent_td
select
 dt.date_year                                  --年
,dt.date_ym                                    --年月
,dt.date_yq                                    --年季度
,dt.date_yw                                    --年周
,agent.four_agent_code	                       --所属四级服务商编号
,agent.three_agent_code                        --所属三级服务商编号
,agent.two_agent_code	                       --所属二级服务商编号
,agent.one_agent_code	                       --所属一级服务商编号
,sum(agent.posi_trade_acc)	                   --正向交易笔数
,sum(agent.posi_trade_amt)	                   --正向交易额	  
,sum(agent.nega_trade_acc)	                   --负向交易笔数 
,sum(agent.nega_trade_amt)	                   --负向交易额  
,sum(agent.net_trade_amt)                      --净交易金额 
,count(distinct agent.internal_shop_code)
from dim_date dt
join agent_judge agent on dt.date_ymd  =  agent.trade_date
group by 
 dt.date_year                     --年
,dt.date_ym                      --年月
,dt.date_yq                      --年季度
,dt.date_yw                      --年周
,agent.four_agent_code	        --所属四级服务商编号
,agent.three_agent_code	        --所属三级服务商编号
,agent.two_agent_code		     --所属二级服务商编号
,agent.one_agent_code      
grouping sets(
 (dt.date_year,agent.one_agent_code) 
,(dt.date_year,agent.one_agent_code,agent.two_agent_code)
,(dt.date_year,agent.one_agent_code,agent.two_agent_code,agent.three_agent_code)
,(dt.date_year,agent.one_agent_code,agent.two_agent_code,agent.three_agent_code,agent.four_agent_code)
,(dt.date_yq,agent.one_agent_code) 
,(dt.date_yq,agent.one_agent_code,agent.two_agent_code)
,(dt.date_yq,agent.one_agent_code,agent.two_agent_code,agent.three_agent_code)
,(dt.date_yq,agent.one_agent_code,agent.two_agent_code,agent.three_agent_code,agent.four_agent_code)
,(dt.date_ym,agent.one_agent_code) 
,(dt.date_ym,agent.one_agent_code,agent.two_agent_code)
,(dt.date_ym,agent.one_agent_code,agent.two_agent_code,agent.three_agent_code)
,(dt.date_ym,agent.one_agent_code,agent.two_agent_code,agent.three_agent_code,agent.four_agent_code)
,(dt.date_yw,agent.one_agent_code) 
,(dt.date_yw,agent.one_agent_code,agent.two_agent_code)
,(dt.date_yw,agent.one_agent_code,agent.two_agent_code,agent.three_agent_code)
,(dt.date_yw,agent.one_agent_code,agent.two_agent_code,agent.three_agent_code,agent.four_agent_code)
)
insert overwrite table dws_merc_date_orgincome_td
select
    dt.date_year                                    --年
   ,dt.date_ym                                      --年月
   ,dt.date_yq                                      --年季度
   ,dt.date_yw                                      --年周
   ,merc.org_code	 	                             --所属机构号
   ,sum(merc.merc_acc)                            --入网总商户数
from dim_date dt  
join dws_merc_org_td merc   
on dt.date_y_m_d  = merc.income_time
group by 
 dt.date_year                  --年
,dt.date_ym                    --年月
,dt.date_yq                    --年季度
,dt.date_yw                    --年周
,merc.org_code	                --所属机构号
grouping sets(
(dt.date_year,merc.org_code) 
,(dt.date_yq,merc.org_code) 
,(dt.date_ym,merc.org_code) 
,(dt.date_yw,merc.org_code) 
)
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值