【PostgreSQL】Window関数(RANK, ROW_NUMBER)の使い方
Window関数(RANK, ROW_NUMBER)の結果イメージ
現在、仕事でPostgreSQLを使っている。
データ分析・集計の仕事をしている中で、rank付けして1位のものだけ取得したい要件があり、rank関数の使い方の紹介&備忘。
関数説明
最初RANKを使っていたが、ROW_NUMBERを使うことにした。
同じ値があった時に別の番号を振りたかった。
関数 | 説明 |
---|---|
RANK | 同順があった場合に次の順位を飛ばす。例:1位、1位、3位、4位・・・ |
ROW_NUMBER | 同じ値があった場合でも、別の番号を振る。例:1位が同じ値だったとしても1位、2位、3位、4位・・・ |
クエリ
こんなイメージのクエリ
SELECT t2.* FROM ( SELECT *, ROW_NUMBER() OVER (PARTITION BY emp_id ORDER BY create_month ASC) AS ranking FROM t1 ) t2 WHERE t2.ranking = 1;