同一idのレコードのうち、特定のカラムが最大のレコードだけを各々抽出する

やりたいこと

以下の様なテーブルとレコードがあったとして。

id prefecture_id age
1 47 23
1 19 42
2 47 39
2 19 58
3 19 11
  1. idが同じもののうち、ageが最大のものだけを抽出
  2. 更にprefecture_idごとの数を数える

方法

いきなり「group by id」としてしまうと、各idのうち一番上のものだけが生き残ってしまう。

id prefecture_id age
1 47 23
2 47 39
3 19 11

そこで、

  1. ageの降順にソート
  2. その結果に対して「group by id」
  3. その結果に対して、「count(prefecture_id)」「group by prefecture_id」


できるにはできたけど、オシャレな感じではない…