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

Comment limiter les résultats dans Oracle

Problème :

Vous souhaitez limiter le nombre de lignes résultant d'une requête dans Oracle.

Exemple :

À l'exam tableau, il y a les noms des étudiants avec les résultats de l'examen.

nom résultat_examen
Janet Morgen 9
Taya Bain 11
Anne Johnson 11
Josh Kaur 10
Ellen Thornton 8

Vous voulez obtenir les trois lignes avec les meilleurs résultats d'examen.

Solution 1 :

SELECT *
FROM (
  SELECT *
  FROM exam
  ORDER BY exam_result DESC
)
WHERE ROWNUM <= 3;

Le résultat de la requête ressemble à ceci :

nom résultat_examen
Taya Bain 11
Anne Johnson 11
Josh Kaur 10

Discussion :

Dans le FROM clause, utilisez une sous-requête qui trie les lignes par exam_result colonne par ordre décroissant.

SELECT *
FROM exam
ORDER BY exam_result DESC

Dans la requête principale, écrivez une condition selon laquelle le nombre de lignes doit être inférieur ou égal à 3 . Utilisez ROWNUM (le numéro de ligne) pour le faire. Pour vous assurer que vous ne verrez que les trois premières lignes, vous avez besoin d'une condition selon laquelle le numéro de ligne doit être inférieur ou égal à 3 .

WHERE ROWNUM <= 3

Vous avez besoin d'une sous-requête juste pour trier les lignes. Si vous souhaitez trois lignes au hasard au lieu des trois meilleures, écrivez simplement le nom de la table au lieu de la sous-requête.

SELECT *
FROM exam
WHERE ROWNUM <= 3;

Fais attention! Cela ne fonctionnera pas lorsque vous recherchez des lignes avec un nombre supérieur à une certaine valeur (par exemple, ROWNUM > 2 ne renverra aucune ligne.)