如何在分组后正确SUM NewConverts列值?SQL查询求助
解决关联查询后SUM值异常翻倍的SQL问题
问题根源:tbl_cmreport与tbl_cmleader通过mem_id关联时,单个mem_id在tbl_cmleader中对应多条记录,导致tbl_cmreport的每条数据被重复匹配,最终SUM(nconvt)重复计算了相同的数值,出现总和远超预期的情况。
修改后的SQL查询(推荐方案)
SELECT cr.mdate AS MDate, WEEK(cr.mdate) AS MWeek, WEEK(NOW()) AS CWeek, SUM(cr.nconvt) AS NewConverts, cl.cml_id, cl.grp_id FROM ( -- 先按mem_id和日期聚合报表数据,避免关联后重复计算 SELECT mem_id, mdate, SUM(nconvt) AS nconvt FROM tbl_cmreport WHERE mdate = '2022-07-08' GROUP BY mem_id, mdate ) cr INNER JOIN tbl_cmleader cl ON cr.mem_id = cl.mem_id WHERE cl.grp_id = 12 GROUP BY cr.mdate, cl.cml_id, cl.grp_id
方案说明
- 先通过子查询对
tbl_cmreport按mem_id和mdate分组求和,确保每个mem_id在指定日期下只有一条汇总记录,避免后续关联时产生重复行。 - 将子查询的结果与
tbl_cmleader关联,再按mdate和cml_id分组,得到每个cml_id对应的正确NewConverts总和。
内容的提问来源于stack exchange,提问作者Michael Nwuzor
相关产品推荐
相关产品推荐

