MySQL按m.ID分组,求SUM(pm.amount_construction*prod.anzahl)的需求
解决方案
你已经算出了每一行的pm.amount_construction * prod.anzahl乘积,现在只需要在查询中对这个乘积做分组求和就能得到想要的结果。
直接修改原查询的写法
如果你的基础查询已经关联了m、pm、prod这几张表,可以直接把乘积放进SUM()函数里,再按m.ID分组:
SELECT m.ID AS Meterial_id, SUM(pm.amount_construction * prod.anzahl) AS Total_Sum FROM -- 替换成你的实际表关联逻辑,示例如下: your_material_table m JOIN pm_table pm ON m.ID = pm.material_id -- 填写你的实际关联条件 JOIN prod_table prod ON pm.production_id = prod.id -- 填写你的实际关联条件 GROUP BY m.ID ORDER BY m.ID;
基于现有结果的子查询写法
如果你已经有了当前返回的多行结果集,也可以把它作为子查询,再对Meterial_id分组求和:
SELECT Meterial_id, SUM(Total_amount) AS Total_Sum FROM ( -- 这里放入你当前生成结果的查询语句 SELECT m.ID AS Meterial_id, pm.amount_construction, prod.anzahl AS Anzahl_der_productionen, pm.amount_construction * prod.anzahl AS Total_amount FROM your_material_table m JOIN pm_table pm ON m.ID = pm.material_id JOIN prod_table prod ON pm.production_id = prod.id ) AS intermediate_results GROUP BY Meterial_id ORDER BY Meterial_id;
最终预期结果
根据你提供的示例数据,运行上述查询后会得到:
| Meterial_id | Total_Sum |
|---|---|
| 181 | 150 |
| 182 | 30 |
| 183 | 100 |
| 283 | 765 |
内容的提问来源于stack exchange,提问作者Nizar Belhiba
相关产品推荐
相关产品推荐

