业务场景:
一张门店表dim_mty_store ,三个字段分别为 store_code(门店)、director_code(主任)、manager_code(大区),级别从小到大:门店 < 主任 < 大区。
要根据门店、主任、大区这三个粒度分别统计门店数量,最笨的办法是三次group by 然后union all到一起,代码如下:
-- 1. 门店
select
manager_code,
director_code,
store_code,
count(store_code) as cnt
from dim_mty_store
group by
manager_code,
director_code,
store_code
union all
-- 2. 主任
select
manager_code,
director_code,
null as store_code,
count(store_code) as cnt
from dim_mty_store
group by
manager_code,
director_code
union all
-- 3. 大区
select
manager_code,
null as director_code,
null as store_code,
count(store_code) as cnt
from dim_mty_store
group by
manager_code
;
相关的快捷方法如下:
1. cube
功能:按照 所有字段组合的可能组合 分组u