同一idのレコードのうち、特定のカラムが最大のレコードだけを各々抽出する
やりたいこと
以下の様なテーブルとレコードがあったとして。
id | prefecture_id | age |
---|---|---|
1 | 47 | 23 |
1 | 19 | 42 |
2 | 47 | 39 |
2 | 19 | 58 |
3 | 19 | 11 |
- idが同じもののうち、ageが最大のものだけを抽出
- 更にprefecture_idごとの数を数える
方法
いきなり「group by id」としてしまうと、各idのうち一番上のものだけが生き残ってしまう。
id | prefecture_id | age |
---|---|---|
1 | 47 | 23 |
2 | 47 | 39 |
3 | 19 | 11 |
そこで、
- ageの降順にソート
- その結果に対して「group by id」
- その結果に対して、「count(prefecture_id)」「group by prefecture_id」
できるにはできたけど、オシャレな感じではない…