Sql 按查询划分组中的值
如何生成这样的请求(Sql Server 2008 R2):Sql 按查询划分组中的值,sql,sql-server,sql-server-2008,group-by,Sql,Sql Server,Sql Server 2008,Group By,如何生成这样的请求(Sql Server 2008 R2): (我需要每个结果的“平均价格”) (如果可能,无需重新计算两个总和的一倍) 或者您可以使用CTE WITH cte AS ( SELECT CategoryId, SUM(Price) AS TotalPrice, SUM(Quantity) AS TotalQuantity 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
没有重新计算
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
试着看看执行计划。
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
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