Sql Server MAX的总和(金额)

时间:2013-01-07 06:42:23

标签: sql sql-server-2008

我有一张表格,其中我有客户提供的付款详情。列如下:

ID, ClientID, Amount

现在我想通过客户端ID找到5个最大金额组合。

我找到DENSE_RANK()但它不适合我,因为我想找到金额

感谢。

4 个答案:

答案 0 :(得分:0)

;WITH totalSum
AS
(
    SELECT  ClientID, SUM(Amount) totalAmount
    FROM    tableName
    GROUP   BY ClientID
)
SELECT ClientID, totalAmount
FROM
    (
        SELECT  ClientID, totalAmount,
                DENSE_RANK() OVER (ORDER BY totalAmount DESC) rn
        FROM    totalSum
    ) s
WHERE   rn <= 5

答案 1 :(得分:0)

SELECT 
    ID,
    ClientID,
    Amount
FROM
    PaymentDetails
GROUP BY
    ID
HAVING
   Amount = SUM(Amount)

答案 2 :(得分:0)

请尝试:

SELECT 
    ClientID, 
SUM(Amount) Amount 
FROM(
    SELECT ROW_NUMBER() OVER (PARTITION BY ClientID ORDER BY Amount DESC) DR, 
        ClientID, 
        Amount 
    FROM YourTable
)x WHERE x.DR<=5
GROUP BY ClientID
ORDER BY ClientID

答案 3 :(得分:0)

这对你有用吗? (不确定我理解你的问题) 如果你想要TOP 5总数,就是这样。 用于查找每个客户SUM()金额的TOP 5的查询是不同的。

;WITH OrderingCTE AS
(
    SELECT   ID
            ,ClientID
            ,Amount = SUM(Amount)
            ,rNum   = ROW_NUMBER() OVER (PARTITION BY ClientID ORDER BY SUM(Amount) DESC)
    FROM MyTable
    GROUP BY ID
            ,ClientID
)
SELECT *
FROM OrderingCTE
WHERE rNum <=5