MySQL如何对两个不同数据表执行SUM聚合函数关联统计
合并实现方案
你可以将两个表的聚合逻辑分别封装为独立子查询完成统计后,再按共同分组字段category_id、product_size关联,最后对接品类表取分类名称即可,避免直接关联未聚合的原始表导致指标重复计算。
参考代码
SELECT COALESCE(q.category_id, s.category_id) AS category_id, COALESCE(q.product_size, s.product_size) AS product_size, c.category_name, COALESCE(q.total_quantity, 0) AS total_quantity, COALESCE(s.total_sell, 0) AS total_sell FROM ( -- 统计表1的库存总量 SELECT category_id, product_size, SUM(product_quantity) AS total_quantity FROM tbl_categories_quantity GROUP BY category_id,product_size ) q -- 可根据需求调整关联类型:仅展示两边都存在的组合用INNER JOIN;仅展示表1存在的组合用LEFT JOIN;展示两边所有组合用FULL JOIN FULL JOIN ( -- 统计表2的销售总量 SELECT category_id, product_size, SUM(product_sell) AS total_sell FROM tbl_product_sell GROUP BY category_id,product_size ) s USING (category_id, product_size) LEFT JOIN tbl_categories c USING (category_id);
注意说明
COALESCE函数用于处理某张表缺失对应分组的场景,缺失的指标默认补0,符合常规统计场景的输出要求- 关联类型可根据你需要展示的维度范围灵活调整,已在代码注释中标注不同关联类型的适用场景
内容的提问来源于stack exchange,提问作者Maung Ching
相关产品推荐
相关产品推荐

