[英]MySQL - Use GROUP BY and SUM to multiply two columns
继之前的问题之后,我正在使用依赖于以下架构的next.tech 课程学习 MySQL:
我的任务是为每个项目编写一个查询来返回:
我编写了以下查询,除了Cost 列之外,它满足所有上述要求:
SELECT p.name AS 'Project Name',
SUM(jo.quantity) AS 'Job Order Quantity',
SUM(jo.price) AS 'Job Order Price',
SUM(jo.quantity * jo.price) AS 'Cost'
FROM projects p
JOIN job_orders jo ON p.id = jo.project_id
GROUP BY name;
第一个项目结果的 Job Order Quantity 为11790 ,Job Order Price 为103617.37 ,Cost 应将这两个数字相乘为1221648793.19 。 但是,我的查询返回数字14321391.34 。
我不确定后一个数字乘以什么,也不确定如何更改查询以返回正确的成本数字。
我不认为你的课程会期望你得到结果
sum(quantity) * sum(price)
因为这些总和相乘的结果在任何类型的计算、分析、报告等中都没有任何意义。
sum(quantity * price) group by name
旨在将每个订单的数量乘以价格,然后将每个“项目名称”的金额相加。
另外,你们的教材要求总价吗?
sum(price)
将给出每个“项目名称”的所有价格的总和,再次,您不能有效地使用。
如果你能以你的学习课程的问题本身开始你的帖子......那会更好。 但我建议您在继续之前先阅读“选择”的语法和解释。
正如patrick3853和Olivier Depriester在评论中所指出的,行SUM(jo.quantity * jo.price)应该改为SUM(jo.quantity) * SUM(jo.price) 。
正确的查询如下:
SELECT p.name AS 'Project Name',
SUM(jo.quantity) AS 'Job Order Quantity',
SUM(jo.price) AS 'Job Order Price',
SUM(jo.quantity) * SUM(jo.price) AS 'Cost'
FROM projects p
JOIN job_orders jo ON p.id = jo.project_id
GROUP BY name;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.