使用場景:需要根據(jù)不同維度對指標進行下鉆統(tǒng)計,比如按小時/按天/按月統(tǒng)計UV數(shù)。
1、grouping sets
在一個GROUP BY查詢中冈绊,根據(jù)不同的維度組合進行聚合,等價于將不同維度的GROUP BY結(jié)果集進行UNION ALL,
其中的GROUPING__ID埠啃,表示結(jié)果屬于哪一個分組集合死宣。
select
user_type,
sales,
count(user_id) as pv,
GROUPING__ID
from
order_detail
group by
user_type,sales
GROUPING SETS(user_type,sales)
ORDER BY
GROUPING__ID;
select
user_type,
sales,
count(user_id) as pv,
GROUPING__ID
from
order_detail
group by
user_type,sales
GROUPING SETS(user_type,sales,(user_type,sales))
ORDER BY
GROUPING__ID;
2、cube
根據(jù)group by的維度的所有組合進行聚合碴开。
select
user_type,
sales,
count(user_id) as pv,
GROUPING__ID
from
order_detail
group by
user_type,sales
WITH CUBE
ORDER BY
GROUPING__ID;
3毅该、rollup
是cube的子集,以最左側(cè)的維度為主潦牛,從該維度進行層次聚合眶掌。
select
user_type,
sales,
count(user_id) as pv,
GROUPING__ID
from
order_detail
group by
user_type,sales
WITH ROLLUP
ORDER BY
GROUPING__ID;