やりたかったこと
- 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のレコード達)たちに対しての処理もしてくれるっていうこと