您正在寻找的内容与标准ActiveRecord查询的映射并不理想。
subquery = Song.joins(:listens).group(:id).select("songs.id, COUNT(*) as listen_count).to_sql
raw = Song.connection.select_rows("SELECT listen_count, COUNT(*) FROM (#{subquery}) t GROUP BY listen_count ORDER BY listen_count DESC")
song_listen_distribution = Hash[raw]
另外,您可以使用ActiveRecord查找所有歌曲的计数,然后在ruby中建立发行字典:
song_listens = Song.joins(:listens).group(:id).count
song_listen_distribution = song_listens.group_by{|n| n.last}.
each_with_object({}){|(k, g), h| h[k] = g.size}