Maison > base de données > tutoriel mysql > RANK() vs DENSE_RANK() dans Oracle : comment trouver le nième salaire et gérer les valeurs nulles ?

RANK() vs DENSE_RANK() dans Oracle : comment trouver le nième salaire et gérer les valeurs nulles ?

Linda Hamilton
Libérer: 2025-01-25 00:16:12
original
929 Les gens l'ont consulté

RANK() vs. DENSE_RANK() in Oracle: How to Find the Nth Salary and Handle Null Values?

RANK() et DENSE_RANK() d'Oracle : recherche du Nième salaire le plus élevé

Cet article explore les différences entre les fonctions RANK() et DENSE_RANK() d'Oracle, démontrant leur utilisation pour identifier le nième salaire le plus élevé et gérer les valeurs nulles potentielles.

Compréhension RANK() et DENSE_RANK()

Les deux fonctions attribuent des classements dans des ensembles de données ordonnés (partitions). La principale différence réside dans leur gestion des cravates :

  • RANK() : Attribue le même rang aux valeurs liées, laissant des espaces dans la séquence de classement. Si trois salariés se partagent le deuxième rang, le rang suivant sera le 5.

  • DENSE_RANK() : Attribue également le même rang aux valeurs liées, mais sans espaces. Si trois salariés se partagent le deuxième rang, le rang suivant sera le 3.

Extraire le Nième salaire le plus élevé

La requête suivante utilise RANK() pour trouver le nième salaire le plus élevé :

<code class="language-sql">SELECT *
FROM (
    SELECT emp.*, RANK() OVER (ORDER BY sal DESC) as salary_rank
    FROM emptbl emp
) ranked_salaries
WHERE salary_rank = n;</code>
Copier après la connexion

Remplacez n par le rang souhaité (par exemple, 3 pour le troisième salaire le plus élevé). Notez la clause ORDER BY sal DESC, cruciale pour le classement par ordre décroissant.

Considérations sur les valeurs nulles

Le traitement des valeurs NULL dépend de la clause ORDER BY :

  • ORDER BY sal NULLS FIRST : NULL les salaires sont classés en premier.

  • ORDER BY sal NULLS LAST : NULL les salaires sont classés en dernier.

Exemple : Considérons une table avec NULL salaires. En utilisant NULLS LAST, une requête sur les trois meilleurs salaires exclurait les employés avec NULL salaires parmi les trois premiers. A l’inverse, NULLS FIRST les inclurait, les plaçant potentiellement en tête du classement.

Pour un guide complet et d'autres exemples, veuillez vous référer à cette ressource : Explication détaillée et exemples

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