【问题标题】:divide values in a Group By query在 Group By 查询中划分值
【发布时间】:2013-12-06 10:31:49
【问题描述】:

如何构建这样的请求(Sql Server 2008 R2):
(我需要每个结果的“平均价格”)

SELECT 
    CategoryId
  , SUM(Price) AS TotalPrice
  , SUM(Quantity) AS TotalQuantity
  -->, TotalPrice/TotalQuantity AS AveragePrice
FROM Products 
GROUP BY CategoryId

(如果可能,无需重新计算两个 SUM 的一倍...)

【问题讨论】:

    标签: sql sql-server sql-server-2008 group-by


    【解决方案1】:

    无需重新计算...

    SELECT *, A.TotalPrice / A.TotalQuantity AS AveragePrice
    FROM (SELECT 
           CategoryId
           , SUM(Price) AS TotalPrice
           , SUM(Quantity) AS TotalQuantity
          FROM Products 
          GROUP BY CategoryId) AS A
    

    【讨论】:

      【解决方案2】:
      SELECT  CategoryId, 
              SUM(Price) AS TotalPrice, 
              SUM(Quantity) AS TotalQuantity, 
              (SUM(Price) * 1.0 / SUM(Quantity) * 1.0) AS AveragePrice
      FROM    Products 
      GROUP   BY CategoryId
      

      或者你可以使用CTE

      WITH cte
      AS
      (
          SELECT  CategoryId, 
                  SUM(Price) AS TotalPrice, 
                  SUM(Quantity) AS TotalQuantity
          FROM    Products 
          GROUP   BY CategoryId
      )
      SELECT CategoryId,
             TotalPrice,
             TotalQuantity,
             TotalPrice / TotalQuantity * 1.0 AveragePrice
      FROM   cte
      

      【讨论】:

      • 试试看执行计划。
      猜你喜欢
      • 2021-12-08
      • 1970-01-01
      • 1970-01-01
      • 2018-10-26
      • 2013-05-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多