如何合并OrderDetails表中重复Product字段的百分比总和?
解决方案:合并相同产品的金额百分比计算
要实现将相同Product名称的行的百分比合并为一个数值,核心是先按产品分组计算总金额,再基于全局总金额计算占比,具体SQL如下:
SELECT MIN(ID) AS ID, Product, ROUND(SUM(Amount) * 100 / (SELECT SUM(Amount) FROM OrderDetails), 0) AS Percentage FROM OrderDetails GROUP BY Product ORDER BY ID;
关键逻辑说明:
GROUP BY Product:将相同产品的记录合并为一组,确保每个产品只返回一行结果SUM(Amount):计算每个产品的累计金额,替代原查询中单行的金额值(SELECT SUM(Amount) FROM OrderDetails):获取所有订单的总金额,作为百分比计算的分母MIN(ID):取每个产品组中的最小ID,匹配你期望输出中的ID格式;如果不需要ID列,可直接删除该字段ROUND(..., 0):将百分比结果取整,和你期望的整数输出一致
验证结果:
执行后会得到与你期望一致的输出:
| ID | Product | Percentage |
|---|---|---|
| 1 | Banana | 50 |
| 2 | Pawpaw | 50 |
内容的提问来源于stack exchange,提问作者User_K47
相关产品推荐
相关产品推荐

