Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Récupérer les 10 premières lignes et additionner toutes les autres de la ligne 11

Vous n'avez pas précisé comment vous classez le top 10, donc je suppose que les décomptes les plus élevés sont classés plus haut ?

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