我正在尝试根据列中的值对记录进行分组,因此我可以使用它在其他位置显示信息。如果我在列中指定值 -
,目前我的工作正常@city_count = People.select('city,count(*)').where("city in ('london', 'paris')").group(:city).count
如果我想要一份伦敦和巴黎的人员名单,但是如果城市名单还有悉尼,纽约,里约等,我也不想继续将额外的城市添加到“城市中”,我希望能找到每个城市选择的人。
有谁知道这样做的最佳方式?如果它也可以包含NULL值。
答案 0 :(得分:2)
只需使用:
@city_count = People.group(:city).count
获取所有城市的计数。这将包括一个nil的条目。
答案 1 :(得分:0)
更有效的方法是一起使用distinct and count methods。
@city_counts = Person.distinct.count(:city)
这样的工作是在db而不是Ruby中完成的。