SQL查询:过滤删除表中重复数据 关联主副表按产品汇总价格
SQL多表关联统计解决方案
核心思路
先完成主表去重避免关联后统计值异常翻倍,再和副表关联后按产品、价格维度聚合求和,即可得到符合要求的统计结果。
实现步骤
- 第一步:对主表执行去重操作,可通过
DISTINCT或者GROUP BY按行项目唯一标识(如行项目ID、订单号+行号组合键)处理,保证每个行项目仅保留1条有效记录 - 第二步:将去重后的主表与副表通过公共关联键(如行项目ID)做内连接
- 第三步:关联结果按「产品名称」「售价」分组,对主表的总计金额做求和聚合,输出最终统计结果
示例SQL代码
SELECT t2.product_name 产品名称, t2.price 售价, SUM(t1.total_amount) 总金额 FROM -- 主表去重,示例中主表唯一标识为line_item_id,总计金额字段为total_amount (SELECT DISTINCT line_item_id, total_amount FROM 主表名) t1 INNER JOIN -- 副表,示例中关联键为line_item_id,产品名称字段为product_name,售价字段为price 副表名 t2 ON t1.line_item_id = t2.line_item_id GROUP BY t2.product_name, t2.price ORDER BY 总金额 DESC;
注意事项
如果主表的重复属于全字段重复,可直接将去重逻辑改为SELECT DISTINCT * FROM 主表名;如果同一行项目ID的总金额存在不一致的情况,可根据业务规则在去重阶段优先取最新/最准确的金额值即可,你可以根据自己的实际表名、字段名调整上述代码的对应部分。
内容的提问来源于stack exchange,提问作者user17384043
相关产品推荐
相关产品推荐

