【问题标题】:how do I write a script to change the discount in the Order Details table如何编写脚本来更改订单详细信息表中的折扣
【发布时间】:2014-05-29 15:01:00
【问题描述】:

在 Northwinds 中,我如何编写脚本来更改订购数量超过 50 的所有订单的“订单详细信息”表中的折扣并显示给定的最大折扣。

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

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

【问题讨论】:

    标签: sql northwind


    【解决方案1】:

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

    当您使用聚合函数时,它要求您按某些字段分组。

    例如:

    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
    

    【讨论】:

      【解决方案2】:

      如果您想查看所有这些列以及最大折扣,那么我建议您使用 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
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-10-28
        • 2021-07-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-08-06
        • 2017-01-17
        • 1970-01-01
        相关资源
        最近更新 更多