Redshift ROW_NUMBER関数で行番号を表示する方法




どうも高妻です。Twitterでもプログラミングのことや暗号通貨のことをつぶやいているのでよかったら覗きにきてください。  

行番号を表示するROW_NUMBER()関数

RedshiftにもMySQLと同じように行番号を数えるrownumのような関数があります。それがROW_NUMBERです。

使い方は下記で、ROW_NUMBER関数自体には引数は渡しません。

OVER関数

OVER関数の中にはPARTITION BY、GROUP BY、 ORDER BYを使用することができます。各関数で集計された行に対して1から順番に番号を割振ることができます。

その他の行番号を採番する関数

Redshiftには他にもRANK()、DENSE_RANK()があり微妙に挙動が違います。

簡単に説明すると

  • ROW_NUMBER:並び順に同列があったとして値がかぶらないように1から順番に採番できる。
  • RANK:順位をつけるのに適しており、並び順に同列が3つある場合、次のレコードはプラス3の番号を採番される。
  • DENSE_RANK:RANKとは違い並び順が同じ場合は同じ番号を採番するが、次のレコードにはプラス1の番号が採番される

SQLで表すと下記のようになります。

参考

下記リンクがわかりやすく説明しているので参考にしてみてください。

The Difference Between ROW_NUMBER(), RANK(), and DENSE_RANK(







コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です