从两个不同的表中获取两个值的乘积

时间:2017-05-03 10:06:06

标签: sql isqlquery

如果有人能帮我弄清楚这个SQL出错的地方会很棒。请参阅下面我尝试回答的问题。我已经回答了我认为它应该如何回答,但是我对下面的考试建议感到非常困惑,它说我应该使用SUM函数?我用Google搜索了这个,当我需要在这种情况下得到两个值的乘积时,我看不到SUM函数如何帮助。还是我错过了一些重要的东西?

问题:TotalValue是Order关系中的一列,其中包含表示每个订单的总价值(金额)的派生数据。编写一个SQL SELECT语句,计算该列的值。

我的回答:

SELECT Product.ProductPrice * OrderLine.QuantityOrdered AS Total_Value
FROM Product,
     OrderLine
GROUP BY Product; 

来自试卷的建议:   This is a straightforward question. Tip: you need to use the SUM function. Also, note that you can take the sum of various records set using the GROUP BY clause.

1 个答案:

答案 0 :(得分:0)

一旦我点击了超链接(蓝色文字),你的问题就变得更加清晰了。

每个订单将由一个或多个产品组成。 因此可能有3个产品A和5个产品B等。

所以你必须得到每个产品的总价值,即你的价格*数量,但是你需要将它们全部加在一起,这就是SUM的来源。

示例:

3 * ProductA Price (e.g. €5) = 15
5 * ProductB Price (e.g. €4) = 20

总价值= 35

因此您需要使用Product,Order和OrderLine表。

像(我还没有测试过):

SELECT SUM(Product.ProductPrice * OrderLine.QuantityOrdered) FROM Product, Order, OrderLine
WHERE Order.OrderID = OrderLine.OrderID
AND Product.ProductID = OrerLine.ProductID
GROUP BY Order.OrderID

这应该返回包含每个订单的totalValue的行 - GROUP BY子句使SUM对每个组进行SUM而不是整个行。

对于单个订单,您需要添加(在GROUP BY之前)“AND Order.OrderID = XXXXX”,其中XXXXX是实际订单OrderId。