1

総売上高に基づいて上位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
4

1 に答える 1

0

なぜ単純ではないのですか

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

于 2013-03-18T22:43:47.763 に答える