多维度聚合
当我们想聚合区分不同维度的数据时,同时又要统计不区分某一维度但区分其他维度的数据。那么我们就可能会重复写很多相似的代码,在聚合的字段中去掉不区分那个维度的字段。
如下:
-- 统计区分店铺区分用户的下单金额
SELECT shop_no,
uid,
SUM(price)
FROM orders
GROUP BY shop_no, uid
UNION ALL
-- 统计区分店铺不区分用户的下单金额
SELECT shop_no,
'ALL',
SUM(price)
FROM orders
GROUP BY shop_no;
-- 使用GROUPING SETS
-- 和上面是等价的且性能更好
SELECT shop_no,
IFNULL(uid,'ALL'),
SUM(price)
FROM orders
GROUPING SETS (
(shop_no, uid),
(shop_no)
)
评论 (0)