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

Comment puis-je récupérer efficacement les N valeurs les plus élevées dans Oracle SQL ?

DDD
DDDoriginal
2025-01-09 13:52:40479parcourir

How Can I Efficiently Retrieve the Top N Highest Values in Oracle SQL?

Extraction des N premiers enregistrements dans Oracle SQL

Besoin de récupérer un nombre spécifique de lignes avec les valeurs les plus élevées ou les plus basses dans une colonne ? Les fonctions analytiques d'Oracle, comme RANK() et DENSE_RANK(), fournissent des solutions efficaces.

Par exemple, pour identifier les cinq employés les mieux rémunérés, utilisez RANK() :

<code class="language-sql">SELECT * FROM (
  SELECT empno, sal, RANK() OVER (ORDER BY sal DESC) AS rnk
  FROM emp
)
WHERE rnk <= 5;</code>

DENSE_RANK() propose une variante, éliminant les écarts de classement causés par les égalités :

<code class="language-sql">SELECT * FROM (
  SELECT empno, sal, DENSE_RANK() OVER (ORDER BY sal DESC) AS rnk
  FROM emp
)
WHERE rnk <= 5;</code>

La meilleure approche dépend de vos besoins spécifiques.

ROW_NUMBER() attribue un rang unique à chaque ligne, mais supprime arbitrairement les égalités, ce qui peut ne pas convenir à tous les scénarios.

<code class="language-sql">SELECT * FROM (
  SELECT empno, sal, ROW_NUMBER() OVER (ORDER BY sal DESC) AS rnk
  FROM emp
)
WHERE rnk <= 5;</code>

Bien qu'une méthode non analytique utilisant ROWNUM existe, elle est moins fiable en raison d'incohérences potentielles et est généralement moins préférée. Les méthodes de fonctions analytiques ci-dessus fournissent des résultats plus robustes et prévisibles.

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:
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