個人開発で必要になったのですが、どこにも書いておらず調べるのが大変だったので残しておきます。
app/model/parent.rb
class Parent < ApplicationRecord
has_many :children, dependent: :destroy
scope :how_many_children, -> { joins(:children).group("parent.name").order(count_all: :desc).limit(3).count }
# => {"親名"=>子テーブル所有数(一位), "親名"=>子テーブル所有数(二位), "親名"=>子テーブル所有数(三位)}
end
今思えばこれ(Railsガイド)の応用だったので、そこまで我流のやり方ではないと思います。
自分の場合はBEST3で十分だったのですが、limitをつけなければ親全員のデータを取得できます。