ホームページ > データベース > mysql チュートリアル > rank()vs。dense_rank()Oracle:これらのウィンドウ関数は、ランキングとヌルの取り扱いでどのように異なりますか?

rank()vs。dense_rank()Oracle:これらのウィンドウ関数は、ランキングとヌルの取り扱いでどのように異なりますか?

Mary-Kate Olsen
リリース: 2025-01-25 00:12:10
オリジナル
194 人が閲覧しました

RANK() vs. DENSE_RANK() in Oracle: How Do These Window Functions Differ in Ranking and Handling Nulls?

oracle rank()およびdense_rank():ウィンドウ関数の比較分析

OracleのRANK()およびは、指定されたパーティション内の行にランクを割り当てるために使用されるウィンドウ関数です。 どちらも同様の目標を達成しますが、ネクタイとヌル値の処理は大きく異なります。 DENSE_RANK()

function RANK()

指定された順序に基づいてランクを割り当てます。 重要なのは、

同じRANK()ランクを結び付けた行に割り当て、ランクをスキップします。 たとえば、3行が2位に縛られている場合、それらはすべて2のランクを受け取り、次のランクは5になります。 function

とは異なり、DENSE_RANK()とは異なり、ネクタイがあっても、ギャップなしで連続したランクを割り当てます。 すべてのタイの行が同じランクを受け取り、その後のランクがすぐに続きます。 スキップされたランクはありません。

n番目に高い給与を取得RANK()DENSE_RANK()

テーブルから最高の給与を識別するには、句:または

のいずれかを使用できます。

emptblRANK()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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート