LoginSignup
3
1

More than 5 years have passed since last update.

【sql】重複レコードの1部分に対する優先順位をつけて、一番高いレコードを取得する

Last updated at Posted at 2017-10-19

やりたかったこと

  • sqlコマンドだけで、重複レコードの1部分に対する優先順位をつけて、一番高いレコードを取得する

ハマったポイント

  • 優先順位をつけるロジック
  • 重複しているグループの中で優先順位をつけて、一番高いレコードだけを取得する

状況

  • idがレコード内の都道府県の数だけ重複してしまっていた
  • こちらで定めた優先順位で、一番優先順位が高い1レコードを取得しないければならない

考え方

■優先順位をつけるロジック

  • 単純に、各都道府県に対して優先順位番号を1,2,3...とつけていく

■こちらで定めた優先順位で、一番優先順位が高い1レコードを取得しないければならない

  • 取得時、最小の優先順位番号を持つレコードを取得

やったこと

1.優先順位番号カラムを追加し、地道に優先順位を打ち込み
2. sql文の最後に、以下を入力

qiita.rb
group by id having MIN(priorityNumber)

学んだこと

qiita.rb
group by id

はただの集計関数だと思ってたけど、勝手にグルーピングしてその中のレコード(上で言う重複したidのレコード達)たちに対しての処理もしてくれるっていうこと

3
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1