我有一个位置模型,其中包含几列:标题,地址,城市,州等......
我正在尝试根据数据库中的位置显示所有城市的列表。然后,我想弄清楚每个城市有多少个地方。
我希望能够输出类似
的内容Tampa(10)
Denver(20)
Atlanta(15)
... and so on
目前,为了获取数据库中的城市列表,我使用以下代码:
cities = Location.uniq.pluck(:city)
从技术上讲,我可以循环遍历所有城市并执行COUNT(*)WHERE city =“cityname”......但这似乎是一种非常低效的方法。
有没有更好的方法来实现这一目标?
答案 0 :(得分:1)
你应该使用GROUP BY insted
SELECT city, COUNT(*) FROM locations GROUP BY city;
答案 1 :(得分:1)
Location.group(:city).count
这将为您提供一个哈希,其中city为键,值为count