oracle sql:rank()およびdense_rank()
の理解 この記事では、特にネクタイとヌルの値を扱う場合、ランキングの動作に焦点を当てて、Oracle SQLの関数とRANK()
関数の重要な違いを明確にしています。
DENSE_RANK()
両方の関数は、指定された順序付けに基づいてデータセット内の行にランクを割り当てます。 重要な違いは、ネクタイの取り扱いにあります:
RANK()
DENSE_RANK()
を使用してテーブルから最高の給与を取得するには、これに類似したクエリを使用できます(より効率的な方法は存在します):
emptbl
これは給与を下降順序でランク付けし、目的のランクで行のフィルターを使用します。
RANK()
<code class="language-sql">SELECT empname FROM (SELECT empname, RANK() OVER (ORDER BY sal DESC) as sal_rank FROM emptbl) WHERE sal_rank = n;</code>
ヌル値の処理は、
句に依存します。 nullが最初に注文された場合(
実例:ORDER BY
ORDER BY sal NULLS FIRST
ORDER BY sal NULLS LAST
サンプルデータでこれを調べてみましょう:
クエリ:
違いを明確に示す結果を生成します。
ランクのスキップを示し、<code>DEPTNO EMPNAME SAL ------------------------------ 10 rrr 10000.00 11 nnn 20000.00 11 mmm 5000.00 12 kkk 30000.00 10 fff 40000.00 10 ddd 40000.00 10 bbb 50000.00 10 ccc 50000.00</code>
nullが異なる方法で連続してランキングを示します。 出力テーブルは、異なるランキング動作を視覚的に表します。 (注:この例は、提供されたデータに名前が付けられたテーブルが存在すると想定しています。実際のテーブル名に置き換えます。)
以上がOracle SQLのrank()とdense_rank()の違いは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。