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

如何高效查询mark1与mark2所有组合对应的Value总和?

更优的组合查询实现方式

当然有,完全不需要写100条SELECT语句,用SQL的GROUP BY子句就能一次性解决这个需求,而且效率高得多。

基础实现(仅查询有数据的组合)

直接通过分组mark1和mark2,配合聚合函数SUM()计算每个组合的value总和:

SELECT mark1, mark2, SUM(value) AS total_value
FROM 你的表名
GROUP BY mark1, mark2;

这条语句会自动识别mark1和mark2的所有唯一组合,对每个分组的value求和,一次性返回所有符合条件的结果。

进阶实现(确保显示全部100种组合,含无数据的情况)

如果你的需求是必须列出所有100种组合(包括那些在表中没有对应数据的组合),可以通过交叉连接生成所有可能的组合,再左连接原表计算总和:

SELECT m1.mark1, m2.mark2, COALESCE(SUM(t.value), 0) AS total_value
FROM (SELECT DISTINCT mark1 FROM 你的表名) m1
CROSS JOIN (SELECT DISTINCT mark2 FROM 你的表名) m2
LEFT JOIN 你的表名 t 
  ON m1.mark1 = t.mark1 
  AND m2.mark2 = t.mark2
GROUP BY m1.mark1, m2.mark2;
  • CROSS JOIN会生成mark1和mark2所有可能的组合;
  • LEFT JOIN确保即使原表中没有该组合的记录,也会保留这个组合行;
  • COALESCE()用来把无数据时的NULL结果转换成0,保证结果的一致性。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 19:42:34