如果有人能帮我弄清楚这个SQL出错的地方会很棒。请参阅下面我尝试回答的问题。我已经回答了我认为它应该如何回答,但是我对下面的考试建议感到非常困惑,它说我应该使用SUM函数?我用Google搜索了这个,当我需要在这种情况下得到两个值的乘积时,我看不到SUM函数如何帮助。还是我错过了一些重要的东西?
问题:TotalValue是Order关系中的一列,其中包含表示每个订单的总价值(金额)的派生数据。编写一个SQL SELECT语句,计算该列的值。
我的回答:
SELECT Product.ProductPrice * OrderLine.QuantityOrdered AS Total_Value
FROM Product,
OrderLine
GROUP BY Product;
答案 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。