sql >> Base de Datos >  >> RDS >> Sqlserver

Recuperar las 10 filas principales y sumar todas las demás en la fila 11

No especificó cómo está clasificando a los 10 principales, por lo que asumo que los recuentos más altos están clasificados más arriba.

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