oracle rank()およびdense_rank():ウィンドウ関数の比較分析
OracleのRANK()
およびDENSE_RANK()
function RANK()
同じRANK()ランクを結び付けた行に割り当て、ランクをスキップします。 たとえば、3行が2位に縛られている場合、それらはすべて2のランクを受け取り、次のランクは5になります。 function
とは異なり、DENSE_RANK()
とは異なり、ネクタイがあっても、ギャップなしで連続したランクを割り当てます。 すべてのタイの行が同じランクを受け取り、その後のランクがすぐに続きます。 スキップされたランクはありません。
n番目に高い給与を取得RANK()
DENSE_RANK()
テーブルから最高の給与を識別するには、句:または
のいずれかを使用できます。
emptbl
RANK()
null値の処理DENSE_RANK()
OVER()
<code class="language-sql">SELECT empname, sal FROM ( SELECT empname, sal, RANK() OVER (ORDER BY sal DESC) AS rnk -- Note: ORDER BY sal DESC for nth highest FROM emptbl ) WHERE rnk = n;</code>
が指定されている場合、ヌルは非ヌル値の前にランク付けされます。 の場合、それらは後にランク付けされます
例示的な例ORDER BY
NULLS FIRST
次のスクリプトを調べてみましょう
NULLS LAST
句の仕様に応じて、null値を処理する際のおよびの対照的な動作を明確に示しています。 この例は、特定のニーズに適したランキング関数を選択する際のこれらのニュアンスを理解することの重要性を強調しています。
以上がrank()vs。dense_rank()Oracle:これらのウィンドウ関数は、ランキングとヌルの取り扱いでどのように異なりますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。