在Northwinds中,如何编写脚本以更改订单数量超过50的所有订单的订单明细表中的折扣,并显示给定的最大折扣。
在northwinds表中,我使用MAX还是SUM?它假设影响159行。我有这个,但一直都是错误。
SELECT OrderID, ProductID,UnitPrice,Quantity,
MAX (Discount)
FROM [Order Details]
答案 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