繁体   English   中英

在Group By查询中划分值

[英]divide values in a Group By query

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

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

(如果可能的话,不再重新计算两个SUM ...)

没有重新计算......

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
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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM