如何编写脚本以更改“订单详细信息”表中的折扣

时间:2014-05-29 15:01:00

标签: sql northwind

在Northwinds中,如何编写脚本以更改订单数量超过50的所有订单的订单明细表中的折扣,并显示给定的最大折扣。

在northwinds表中,我使用MAX还是SUM?它假设影响159行。我有这个,但一直都是错误。

SELECT OrderID, ProductID,UnitPrice,Quantity,
MAX (Discount)
FROM [Order Details]

2 个答案:

答案 0 :(得分:0)

问题的原因是数据库不知道如何向您显示OrderID,ProductID,UnitPrice,Quantity,并且仍然为您提供折扣的最大值。

使用聚合函数时,需要按某些字段进行分组。

例如:

SELECT OrderID, ProductID,UnitPrice,Quantity, MAX (Discount)
FROM [Order Details]
group by  OrderID, ProductID,UnitPrice,Quantity

要获得超过50的订单数量,您需要使用HAVING关键字。

SELECT OrderID, ProductID,UnitPrice,Quantity,Discount
FROM [Order Details]
having Quantity > 50

答案 1 :(得分:0)

如果您希望看到所有这些列以及最大折扣,那么我建议使用Over partition by,因为您可以返回聚合而无需按您选择的所有列进行分组。

SELECT OrderID,ProductID,UnitPrice,Quantity,
MAX(Discount) OVER(PARTITION BY OrderID) as MaxDiscount
from Order Details

对于超过50的数量,我只会使用

SELECT OrderID,ProductID,UnitPrice,Quantity,Discount
FROM Order Details
where Quantity > 50