You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用单条SQL语句实现多列组合GROUP BY并包含ALL聚合结果?

用单条SQL实现多列全组合分组的聚合查询

你可以通过GROUP BY CUBE语法结合COALESCE函数实现需求,单条查询即可生成所有列值组合的聚合结果:

SELECT
  COALESCE("COUNTRY", 'ALL') AS "COUNTRY",
  COALESCE("PRODUCT", 'ALL') AS "PRODUCT",
  SUM("VALUE") AS "SUM(VALUE)"
FROM "PRODUCTS"
GROUP BY CUBE("COUNTRY", "PRODUCT")
ORDER BY 
  CASE WHEN "COUNTRY" = 'ALL' THEN 1 ELSE 0 END,
  "COUNTRY",
  CASE WHEN "PRODUCT" = 'ALL' THEN 1 ELSE 0 END,
  "PRODUCT";

关键说明

  • CUBE("COUNTRY", "PRODUCT")会自动生成所有可能的分组维度组合:
    • 按(COUNTRY, PRODUCT)分组(对应原始行的聚合)
    • 按COUNTRY单独分组(每个国家的总价值,产品维度显示ALL)
    • 按PRODUCT单独分组(每个产品的总价值,国家维度显示ALL)
    • 无分组(所有数据的总价值,两个维度都显示ALL)
  • COALESCE函数将分组过程中产生的NULL值替换为ALL,匹配你需要的输出格式
  • 额外的ORDER BY子句是为了让结果和你给出的预期输出顺序一致,可根据需求调整

结果验证

针对你的示例数据,执行上述查询后会直接返回:

COUNTRY  PRODUCT  SUM(VALUE)
cz       p1       5
cz       p2       10
cz       ALL      15
de       p1       8
de       p2       15
de       ALL      23
ALL      p1       13
ALL      p2       25
ALL      ALL      38

内容的提问来源于stack exchange,提问作者Smajl

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 20:20:20