Rails 3 + activerecord:是否有一个单独的查询来计数(field1)按field2分组



我正在努力寻找最好的方法来总结表中的数据

我有一个包含字段

的表Info
id
region_number integer (NOT associated with another table)
member_name string
member_active T/F

成员属于一个区域,有一个名称,可以是活动的,也可以是不活动的。

我想知道是否有一个查询将创建一个有3列的表,以及有唯一的region_numbers的尽可能多的行:

For each unique region_number:
  region_number
  COUNT of members in that region
  COUNT of members in that region with active=TRUE

假设我有50个区域,我看到如何使用2x50查询,但这肯定不是正确的方法!

如果你准备做一点后期处理,你总是可以把几件事分组:

SELECT region_number, COUNT(*) AS instances, member_active
  GROUP BY region_number, member_active
  WHERE region_number IN ?

这允许您同时对所有地区编号进行一次查询。将有一行用于T值,一行用于F值,但仅当它们存在时。

如果你看到你在做很多查询,只有在标识符不同的情况下,你通常可以像这样一次执行。

最新更新