auw*_*688 2 sql sql-server group-by sql-order-by
我有一个组名列和一个花费金额列。我需要根据组名对金额进行分组,然后获取最高的五个。在那之后,我需要将其余的合并到它自己的组中,总花费的金额。这就是我现在所拥有的
SELECT groupName, SUM(amount) AS theAmountSpent
FROM purchases
GROUP BY groupName
ORDER BY theAmountSpent DESC
Run Code Online (Sandbox Code Playgroud)
这一组并订购它们,但我不知道如何然后抓住剩余的组将它们组合起来。任何帮助,将不胜感激。
使用 row_number() 的替代 CTE 方法(SQL Server 2005+):
WITH cte AS (
SELECT ROW_NUMBER() OVER (ORDER BY (SUM(amount)) DESC) AS num,
groupName, SUM(amount) AS theAmountSpent
FROM purchases
GROUP BY groupName
)
SELECT groupName, theAmountSpent FROM cte WHERE num BETWEEN 1 AND 5 --top 5
UNION ALL
SELECT 'Sum rest', SUM(theAmountSpent) FROM cte WHERE num > 5 -- sum of rest
Run Code Online (Sandbox Code Playgroud)