2011-05-20 2 views
0

Comment trouver Nth plus haut salaire sans utiliser de sous-requête dans MS SQL?Requête SQL pour trouver Nième salaire le plus élevé

+2

La question est vague. Postez votre schéma de tables. –

+0

Et si deux personnes avaient le même salaire autour du point N? Par exemple: quel devrait être le quatrième élément de cette liste ordonnée? 10 9 8 8 8 7 7 7 6 5 –

+0

@fearofawhackplanet vrai mais la question que vous liez ne spécifie pas la version de SQL Server (sauf dans un commentaire) donc les réponses n'utilisent pas les fonctions de fenêtrage potentiellement plus efficaces/plus claires disponible depuis SQL Server 2005. –

Répondre

7
;WITH cte1 
AS 
(
    SELECT ROW_NUMBER() OVER(ORDER BY SALARY DESC) AS RN, * FROM Salaries 
) 
SELECT * 
FROM cte1 
WHERE RN = 5 <-- Nth highest 
+2

'ROW_NUMBER()' n'est peut-être pas ce qui est voulu ici. 'RANK()' ou 'DENSE_RANK()' peut être plus approprié en fonction des besoins. –

+0

DENSE_RANK(), dans mon cas donne 2 lignes. alors devrais-je distinct dans ce cas? –

+2

@Xou cela dépend de vos besoins, quels résultats voulez-vous voir si deux personnes ont le même salaire autour du Nième point? –

Questions connexes