ホームページ >データベース >mysql チュートリアル >Oracle の RANK() と DENSE_RANK() : N 番目の給与を見つけて Null 値を処理する方法

Oracle の RANK() と DENSE_RANK() : N 番目の給与を見つけて Null 値を処理する方法

Linda Hamilton
Linda Hamiltonオリジナル
2025-01-25 00:16:12930ブラウズ

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

oracleのrank()およびdense_rank():n番目に高い給与

を見つける この記事では、Oracleの

>>>関数の違いを調査し、N番目に高い給与の識別と潜在的なヌル値を識別する際の使用を示しています。 RANK()DENSE_RANK()

および

RANK()を理解しています DENSE_RANK()両方の関数は、順序付けられたデータセット(パーティション)内にランクを割り当てます。 重要な違いは、ネクタイの取り扱いにあります:

    :同じランクをTied値に割り当て、ランキングシーケンスにギャップを残します。 3人の従業員が2番目のランクを共有している場合、次のランクは5になります。
  • RANK()

    :同じランクもタイの値に割り当てますが、ギャップなしで
  • を割り当てます。 3人の従業員が2番目のランクを共有している場合、次のランクは3になります。
  • DENSE_RANK()n番目に高い給与を抽出します

  • 次のクエリでは
を使用して最高の給与を見つけます:

を希望のランクに置き換えます(3番目に高い給与の場合は3)。 注文ランキングを下降するために重要な

句に注意してください RANK()

null値の考慮事項
<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>

n値の扱いはORDER BY sal DESC句に依存します:

給与は最初にランクされています。NULL ORDER BY

  • 給与は最後にランクされています ORDER BY sal NULLS FIRST NULL

    例:給与のあるテーブルを検討してください。
  • を使用すると、上位3つの給与のクエリは、トップ3の給与を持つ従業員を除外します。 逆に、
  • にはそれらが含まれ、潜在的にランキングのトップに配置します。

    包括的なガイドとその他の例については、このリソースを参照してください。

以上がOracle の RANK() と DENSE_RANK() : N 番目の給与を見つけて Null 値を処理する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。