結果セットのOracleソート


結果セットのソート**rank()over、dense_rank()、row_numbe**r()の違いと使い方
  • rank()over:rank()overは、指定された条件を検出してランキングを行うのですが、特徴があります.学生ランキングであれば、この関数を用いて、成績が同じ2名を並べて、例えば下図1 2 2 4にします.使い方:select a1,a2,rank () over (order by a1) rank from test;
  • dense_rank(): dense_rank()の役割はrank()に似ていますが、唯一の違いは、学生の成績が並んだ後、次の学生が並んでいる順位を空けていないことです.例えば、下図1 2 2 4です.

  • 使用法:select a1,a2, dense_rank () over (order by a1) rank from test;
  • row_number() row_number()は異なり、上の2つとの違いが明らかになります.この関数は並列するかどうかを考慮する必要はありません.条件に基づいてクエリされた数値が同じであっても、次の図
  • のように連続してランキングされます.
    使用法:select a1,a2, row_number () over (order by a1) rank from test;row_number()とrownumの差は多くなく、機能がもっと強い(各パケット内で1から開くときにソートできる).rank()はジャンプソートで、2番目の2番目の場合は4番目(同様に各パケット内).dense_rank()lは連続ソートであり,2位の場合も3位に続く.それに比べてrow_numberは重複値がありません