【发布时间】:2020-01-11 04:51:43
【问题描述】:
从 earlier question 开始,我正在使用依赖于 following schema 的 next.tech course 学习 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(jo.quantity) * SUM(jo.price) as 'Cost',看看这是否能满足您的期望。 -
我认为您的期望值 1221648793.19 是错误的,没有任何意义,您的查询实际上是正确的。因此,与其说是技术问题,不如说是如何理解问题的问题。无论如何,如果你想得到你的期望值,它将是
SUM(jo.quantity) * SUM(jo.price) -
是的,此更改产生了正确的结果 - 谢谢!
-
我同意期望的结果是荒谬的。如果我以 20 便士的价格购买 1 个鸡蛋,以 25 便士的价格购买 3 个苹果,那么总成本是 95 便士,而不是 1.80 英镑(4 x 45)
-
我假设这个问题不是“常识”,而是更多地试图展示不同的 SQL 函数如何协同工作。很高兴知道这种乘法不太可能在现实生活中出现!