- Oracleのrank()およびdense_rank()関数の詳細な議論データ分析とソートの分野では、Oracleは2つの非常に異なる関数を提供します:rank()とdense_rank()。それぞれに特定の用途があります。この記事では、これら2つの機能とそのアプリケーションシナリオの微妙な違いについて説明します。
rank()関数は、指定された順序に従って行の行として割り当てられ、dense_rank()関数は連続レベルを割り当てます。たとえば、次のシーンを検討してください:
この例では、RRRとNNNの給与は同じですが、ランク()関数はそれらに同じレベル(2)を割り当て、Dense_Rank()関数は連続レベルを割り当てて、レベルのレベルがないことを確認します。スキップ
nの給与を見つけてくださいテーブル内のn給与を見つけるには(たとえば、3番目の高い給与)、次の問い合わせを使用できます。
<code class="language-sql">SELECT empname, sal, RANK() OVER (ORDER BY sal) AS r, DENSE_RANK() OVER (ORDER BY sal) AS dr FROM emptbl;</code>
Empname | Sal | r | dr |
---|---|---|---|
rrr | 10000 | 2 | 2 |
nnn | 20000 | 3 | 3 |
mmm | 5000 | 1 | 1 |
kkk | 30000 | 4 | 4 |
fff | 40000 | 5 | 5 |
ddd | 40000 | 5 | 5 |
bbb | 50000 | 7 | 6 |
ccc | 50000 | 7 | 6 |
rank()およびdense_rank()関数の動作は、最初のnullまたはnulls nullsが句ごとに指定されているかどうかに依存します。たとえば、空気価値の給与を含む次の表を検討してください。
この場合、空の値は最小レベル(最初のヌル)を持つと見なされ、最高レベル(nulls last)と比較して異なるレベルになります。結論
<code class="language-sql">SELECT sal FROM emptbl ORDER BY sal DESC LIMIT n-1, 1;</code>
oracleのrank()およびdense_rank()関数は、2つの異なるデータソートメソッドを提供します。それらの違いと適切な使用法を理解し、データ分析と操作タスクを効果的に実行できます。
以上がOracleのrank()とdense_rank()関数の違いは何ですか?また、null値をどのように処理しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。