1

顧客の名と姓を含む 2 つの列の SUM を返すクエリがあります。

約40000件のレコードを返しています。私のクエリは:-

SELECT  SUM(Orders.BusinessVolumeTotal) AS BV,
        SUM(Orders.CommissionableVolumeTotal) AS PV,
        ISNULL(Customers.FirstName,''), Customers.LastName
FROM    Customers INNER JOIN Orders ON Customers.CustomerID = Orders.CustomerID
WHERE   Orders.OrderDate >= convert(DATETIME, '1/1/2013 12:00:00 AM')
        AND Orders.OrderDate < convert(DATETIME, '12/31/2013 12:00:00 AM')
GROUP BY Customers.FirstName, Customers.LastName

しかし、BV 列と PV 列で最も高い値を持つ 10 行を返したいだけです。

前もって感謝します。

4

3 に答える 3

2

グループごとに上位 10 行が必要な場合ROW_NUMBERは、次のように使用できCTEます。

WITH CTE AS
(
    SELECT SUM(Orders.BusinessVolumeTotal) OVER(PARTITION BY Customers.FirstName, Customers.LastName) AS BV, 
           SUM(Orders.CommissionableVolumeTotal) OVER(PARTITION BY Customers.FirstName, Customers.LastName) AS PV, 
           ISNULL(Customers.FirstName,'') As FirstName, 
           Customers.LastName,
       RN = ROW_NUMBER() 
              OVER(PARTITION BY Customers.FirstName, Customers.LastName
                   ORDER BY (Orders.BusinessVolumeTotal + Orders.CommissionableVolumeTotal) DESC) 
    FROM Customers INNER JOIN Orders ON Customers.CustomerID = Orders.CustomerID
    WHERE  Orders.OrderDate >= convert(DATETIME, '1/1/2013 12:00:00 AM')
    AND Orders.OrderDate < convert(DATETIME, '12/31/2013 12:00:00 AM')        
)
SELECT * FROM CTE WHERE RN <= 10
于 2013-10-28T12:43:18.250 に答える
1

2 つの列のグループに基づいて、以下のように上位 10 行を取得できます。

SELECT  TOP 10
        SUM(Orders.BusinessVolumeTotal) AS BV,
        SUM(Orders.CommissionableVolumeTotal) AS PV,
        ISNULL(Customers.FirstName,''), Customers.LastName
FROM    Customers INNER JOIN Orders ON Customers.CustomerID = Orders.CustomerID
WHERE   Orders.OrderDate >= convert(DATETIME, '1/1/2013 12:00:00 AM')
        AND Orders.OrderDate < convert(DATETIME, '12/31/2013 12:00:00 AM')
GROUP BY Customers.FirstName, Customers.LastName
ORDER BY SUM(Orders.BusinessVolumeTotal) + SUM(Orders.CommissionableVolumeTotal) DESC
于 2013-10-28T12:50:00.480 に答える