Sql server 在子查询中聚合分组依据
尝试在一列中按年度返回每个特定销售人员的销售额,并在下一列中返回总销售额的百分比 子查询应该返回所有销售的总计,因此可以计算百分比。但是百分比是错误的,因为我无法聚合OrderDate,因为这样它在join语句中就不会被识别(不能按年份分组(OrderDate))。任何洞察都会很好Sql server 在子查询中聚合分组依据,sql-server,Sql Server,尝试在一列中按年度返回每个特定销售人员的销售额,并在下一列中返回总销售额的百分比 子查询应该返回所有销售的总计,因此可以计算百分比。但是百分比是错误的,因为我无法聚合OrderDate,因为这样它在join语句中就不会被识别(不能按年份分组(OrderDate))。任何洞察都会很好 SELECT Year(t1.OrderDate) as SalesYear, sum(SubTotal+TaxAmt) as Sales, sum(SubTotal+TaxAmt) / sum(Yea
SELECT Year(t1.OrderDate) as SalesYear, sum(SubTotal+TaxAmt) as Sales,
sum(SubTotal+TaxAmt) / sum(YearlyGrandTotal) AS [Percent]
FROM [AdventureWorks2017].[Sales].[SalesOrderHeader] t1
INNER JOIN (
SELECT OrderDate,Year(OrderDate) as O, sum(SubTotal+TaxAmt) as
YearlyGrandTotal
FROM Sales.SalesOrderHeader
GROUP BY (OrderDate)
) AS [Total] ON t1.OrderDate = Total.OrderDate
where SalesPersonID = 275
GROUP BY Year(t1.OrderDate)
使用group by year(orderdate)
获取salersonid=275的sales
和yearlygrandtotal
并将其作为子查询来计算百分比:
select
t.salesyear,
t.sales,
100.0 * t.sales / t.yearlygrandtotal percentage
from (
select
year(orderdate) salesyear,
sum(case when salespersonid = 275 then subtotal + taxamt else 0 end) sales,
sum(subtotal + taxamt) yearlygrandtotal
from [AdventureWorks2017].[Sales].[SalesOrderHeader]
group by year(orderdate)
) t