Maison > base de données > tutoriel mysql > Comment récupérer les N valeurs les plus élevées dans Oracle SQL ?

Comment récupérer les N valeurs les plus élevées dans Oracle SQL ?

Mary-Kate Olsen
Libérer: 2025-01-09 14:01:40
original
711 Les gens l'ont consulté

How to Retrieve the Top N Highest Values in Oracle SQL?

Extraction des N valeurs les plus élevées dans Oracle SQL

Défi : Comment sélectionner efficacement un nombre spécifique de lignes contenant les valeurs les plus élevées d'une colonne particulière dans une requête Oracle SQL ?

Solution :

L'approche optimale utilise les fonctions analytiques d'Oracle, en particulier RANK() ou DENSE_RANK() :

Emploi de la fonction RANK() :

select * from (
  select empno, sal, rank() over (order by sal desc) as rnk
  from emp
)
where rnk <= 5;
Copier après la connexion

Cette requête récupère les 5 salaires les plus élevés, ainsi que les numéros d'employés correspondants.

Utilisation de la fonction DENSE_RANK() :

select * from (
  select empno, sal, dense_rank() over (order by sal desc) as rnk
  from emp
)
where rnk <= 5;
Copier après la connexion

DENSE_RANK() offre un avantage sur RANK() en éliminant les écarts dans le classement lorsque plusieurs lignes partagent la même valeur.

Considérations importantes :

  • Bien que la fonction analytique ROW_NUMBER() puisse également y parvenir, RANK() ou DENSE_RANK() sont généralement préférés pour sélectionner les N premières valeurs car elles gèrent les égalités avec plus de grâce.
  • Évitez d'utiliser la pseudo-colonne ROWNUM comme solution autonome. Son application avant la clause ORDER BY peut conduire à des résultats inexacts.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal