ホームページ >データベース >mysql チュートリアル >rank()vs。dense_rank()in oracle:違いは何ですか?
oracle rank()およびdense_rank():詳細な比較
OracleのRANK()
DENSE_RANK()
RANK()
関数は、階層的にランクを割り当てます。 同一の値の行は同じランクを受け取りますが、その後のランクはスキップされます。 たとえば、3行が最高値を共有する場合、それらはすべて1ランクになり、次のランクは4になります(2と3をスキップ)。
RANK()
関数:連続したランク
DENSE_RANK()
絆が存在する場合でも、連続したランクを提供します。同じ例を使用して、最高値の3つの行はそれぞれ1、2、および3にランクされ、連続ランクシーケンスを維持します。
DENSE_RANK()
このSQLは、効率的なページネーションにと
を使用します。 ここでのとemptbl
の選択は、給与のつながりの場合にランクをスキップするかどうかによって異なります。
<code class="language-sql">SELECT empname, sal FROM emptbl ORDER BY sal DESC OFFSET 2 ROWS FETCH NEXT 1 ROWS ONLY;</code>null値の処理
OFFSET
FETCH
RANK()
値の処理は、DENSE_RANK()
ステートメント内の
句に依存します。 値以前の値の値をランク付けし、
。
正しい関数を選択するNULL
NULLS FIRST
NULLS LASTORDER BY
は、ネクタイがあっても、異なるランクが必要な場合に使用します。 結び付けられた値に関係なく、連続したランクが必要な場合はNULLS FIRST
が望ましい。 選択は、特定の分析要件に完全に依存します
NULL
NULL
さらなる学習NULLS LAST
より包括的な理解については、公式のOracleのドキュメントを参照してください:
oracle rank()function RANK()
DENSE_RANK()
oracle dense_rank()function
rank()およびdense_rank()の例
以上がrank()vs。dense_rank()in oracle:違いは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。