Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Recuperando as 10 principais linhas e somando todas as outras na linha 11


Você não especificou como está classificando os 10 primeiros, então estou assumindo que as contagens mais altas são classificadas mais altas?
With TopItems As
    (
    SELECT C.CountryID AS CountryID
            , C.CountryName AS Country
            , Count(FirstName) AS Origin
            , ROW_NUMBER() OVER( ORDER BY Count(FirstName) DESC ) As Num
    FROM Users AS U
        JOIN Country AS C 
            ON C.CountryID = U.CountryOfOrgin
    GROUP BY C.CountryName, C.CountryID
    )
Select CountryId, Country, Origin
From TopItems
Where Num <= 10
Union ALL
Select 0, 'Others', Sum(Origin)
From TopItems
Where Num > 10