On m'a demandé dans une interview d'écrire une requête SQL qui récupère les trois premiers enregistrements ayant la valeur la plus élevée sur une colonne d'une table. J'avais écrit une requête qui récupérait tous les enregistrements avec la valeur la plus élevée, mais je n'ai pas compris comment exactement je peux obtenir seulement les trois premiers enregistrements de ceux-ci.Question simple sur la requête de base de données
Pourriez-vous m'aider?
Merci.
Ce n'est pas correct pour Oracle. Il applique le WHERE avant le ORDER BY, donc vous obtenez 10 lignes qui correspondent, puis les trie. –
@WW - Si vous souhaitez supprimer l'Oracle, par exemple, puis. Ma compréhension de celui-ci n'est pas assez complexe pour y répondre pleinement. C'était initialement à partir du lien posté dans la réponse. –
Dans Oracle 'SELECT R. * FROM (SELECT * FROM SomeTable ORDER par FieldName DESC) R WHERE rownum <4' fera l'affaire pour vous. Bien sûr, il existe une autre méthode impliquant les fonctions Oracle Analytical de 'LEAD, LAG', qui ne peuvent pas être couvertes ici. – Guru