提示:新方法探索:FIXED类函数
一、需求描述
在多个维度组成的表中,实现明细数据数据要子级维度的整体值比较
(品牌-品类)vs 品类汇总
二、需求探索
表1数据集:
select * from tab
如图,无法在先按品牌,再按品类的分组条件下,算出品类整体数
因此,数据集中需要事先算出单独按照和3种品类汇总的数
三、方法探索
方法1:数据堆叠
select '明细' as 数据类型, t.*
from tab t
union all
select '品类汇总' as 数据类型, t.*, t0.*
from (select t.品牌 from tab t group by t.品牌) t,
(select t.品类, sum(t.交易额) as 交易额 from tab t group by t.品类) t0;
方法2:汇总关联
select t.*, t0.交易额
from tab t
left join (select t.品类, sum(t.交易额) as 品类汇总
from tab t
group by t.品类) t0 --品类汇总
on t.品类 = t0.品类
四、注意
当底表维度更多时,注意聚合方式”汇总“和”平均“的差别
同理,(品牌-品类)vs品牌汇总
五、加入权限控制维度
如图所示,可以实现不同门店范围的数据VS整体
方法1:数据堆叠
select '明细' as 数据类型, t.* from TABN t
union all
select '门店品类汇总' as 数据类型, t.*, t0.*
from (select t.品牌 from tabn t group by t.品牌) t,
(select t.品类, t.门店,sum(t.交易额) as mendian from tabn t group by t.品类,t.门店) t0;
方法2:汇总关联
select t.*,t0.门店品类汇总 from tabn t
left join
(select t.门店,t.品类, sum(t.交易额) as 门店品类汇总 from tabn t group by t.门店, t.品类) t0
on t.品类=t0.品类 and t.门店=t0.门店;