rails - 按值计算记录

时间:2016-11-01 16:58:35

标签: ruby-on-rails count group-by

我正在尝试根据列中的值对记录进行分组,因此我可以使用它在其他位置显示信息。如果我在列中指定值 -

,目前我的工作正常
@city_count = People.select('city,count(*)').where("city in ('london', 'paris')").group(:city).count

如果我想要一份伦敦和巴黎的人员名单,但是如果城市名单还有悉尼,纽约,里约等,我也不想继续将额外的城市添加到“城市中”,我希望能找到每个城市选择的人。

有谁知道这样做的最佳方式?如果它也可以包含NULL值。

2 个答案:

答案 0 :(得分:2)

只需使用:

@city_count = People.group(:city).count

获取所有城市的计数。这将包括一个nil的条目。

答案 1 :(得分:0)

更有效的方法是一起使用distinct and count methods

@city_counts = Person.distinct.count(:city)

这样的工作是在db而不是Ruby中完成的。