我正在试着根据他们的总销售额找出前5名销售人员。我想展示销售代表的名字,以及他们的总销售额,我在AdventureWorks工作。
一直让我感到困惑的是GROUP BY语句。在下面的查询中,我不确定为什么GROUP BY不能工作。我确信有一种更有效的方法可以做到这一点,但在这一点上,我只是试图真正学习连接和子查询,而GROUP BY的工作方式似乎并不是我所掌握的。
SELECT SalesLT.Customer.SalesPerson, SUM(repjoin.TotalDue) OVER (PARTITION BY repjoin.salesperson)
FROM SalesLT.customer INNER JOIN
(SELECT SalesLT.SalesOrderHeader.CustomerID,
SalesLT.SalesOrderHeader.TotalDue,
SalesLT.Customer.SalesPerson
FROM SalesLT.Customer
INNER JOIN SalesLT.SalesOrderHeader
ON SalesLT.SalesOrderHeader.CustomerID = SalesLT.Customer.CustomerID
) repjoin
ON SalesLT.Customer.CustomerID = repjoin.CustomerID
GROUP BY SalesLT.Customer.SalesPerson发布于 2013-03-19 06:43:48
为什么不简单地
SELECT TOP 5
c.SalesPerson,
SUM(soh.TotalDue) TotalSales
FROM
SalesLT.Customer c
INNER JOIN SalesLT.SalesOrderHeader soh ON soh.CustomerID = c.CustomerID
GROUP BY
c.SalesPerson
ORDER BY
SUM(soh.TotalDue) DESChttps://stackoverflow.com/questions/15488018
复制相似问题