2014-05-11 4 views
-2
select top 1 sal from(SELECT DISTINCT TOP 6 sal 
FROM salary 
ORDER BY sal desc) a order by sal 

Je suis nouveau au serveur sql peut-on s'il vous plaît me dire que la façon dont cette requête est de trouver le 6e salaire le plus élevé de salaire de table, je peux comprendre que la requête intérieure est de trouver les 6 premiers salaires et les classer par ordre décroissant, mais la chose que je ne peux pas comprendre est que le top 1 devrait donner le salaire le plus élevé des 6 salaires qui sont rangés par ordre décroissant comment il retourne le dernier salaire (bas)Comment fonctionne cette requête fonctionne

+0

TOP n'est pas la même chose que MAX. TOP passe commande. – tuespetre

+0

comment est top 1 trouver le 6ème plus haut, il devrait trouver le salaire le plus élevé et quel est le rôle de "a" dans cette requête – Ashu

Répondre

1

Vérifiez le order by à la fin, c'est ascendant par défaut, ce qui signifie obtenir le salaire le plus bas parmi les 6 meilleurs salaires.

a est requis par SQL Server lorsque nous sélectionnons une sous-requête. Cela n'a aucun sens ici.

Une requête « intelligent » est

SELECT sal 
FROM salary 
ORDER BY sal 
OFFSET 5 ROWS FETCH 1 ROW ONLY; 
+0

merci d'avoir compris maintenant – Ashu

1

comment savez-vous que la requête interne est de retour top 6 des salaires dans l'ordre décroissant? Le mot-clé DESC les arrangera dans l'ordre décroissant .... par défaut, il les ordonne par ordre croissant. La requête externe a un ORDER BY et non ORDER BY DESC

De là, il renvoie le moins de salaire parmi les 6 meilleurs salaires retournés par requête interne.

+0

merci, je l'ai – Ashu

Questions connexes