Doris 一些好用的技巧

MrSnake
2025-10-30 / 0 评论 / 2 阅读 / 正在检测是否收录...

多维度聚合

当我们想聚合区分不同维度的数据时,同时又要统计不区分某一维度但区分其他维度的数据。那么我们就可能会重复写很多相似的代码,在聚合的字段中去掉不区分那个维度的字段。
如下:

-- 统计区分店铺区分用户的下单金额
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)
  )
1

评论 (0)

取消