繁体   English   中英

MySQL - 使用 GROUP BY 和 SUM 将两列相乘

[英]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)

将给出每个“项目名称”的所有价格的总和,再次,您不能有效地使用。

如果你能以你的学习课程的问题本身开始你的帖子......那会更好。 但我建议您在继续之前先阅读“选择”的语法和解释。

正如patrick3853Olivier 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM