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
636 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() :

<code class="language-sql">select * from (
  select empno, sal, rank() over (order by sal desc) as rnk
  from emp
)
where rnk <= 5;</code>
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() :

<code class="language-sql">select * from (
  select empno, sal, dense_rank() over (order by sal desc) as rnk
  from emp
)
where rnk <= 5;</code>
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!

source:php.cn
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