0

タイトル、住所、都市、州など、いくつかの列を持つ場所モデルがあります...

データベース内の場所に基づいて、すべての都市のリストを表示しようとしています。次に、都市ごとにいくつの場所があるかを把握しようとしています。

のようなものを出力できるようにしたい

Tampa(10) 
Denver(20)
Atlanta(15)
... and so on

現在、データベース内の都市のリストを取得するために、次のコードを使用しています。

cities = Location.uniq.pluck(:city)

技術的には、すべての都市をループして COUNT(*) WHERE city = "cityname" を実行することもできますが、これは非常に非効率的な方法のようです。

これを達成するためのより良い方法はありますか?

4

2 に答える 2

1

GROUP BY insted を使用する必要があります

SELECT city, COUNT(*) FROM locations GROUP BY city;
于 2013-05-31T20:23:18.147 に答える
1
Location.group(:city).count

これにより、都市がキー、値がカウントのハッシュが得られます

于 2013-05-31T20:57:27.217 に答える