在Rails中分组,计数,拥有和排序

时间:2015-01-07 08:33:52

标签: ruby-on-rails rails-activerecord

我有的表格,其中包含年龄的列。

我如何计算每个年龄段的人数,从最老到最年轻的人,按年龄过滤至少2人?

我将如何在原始SQL中编写它:

SELECT
  COUNT(1) AS people_count,
  age
FROM people
GROUP BY age
HAVING people_count > 1
ORDER BY age DESC

在Rails中(我不知道该怎么做):

Person.group(:age).count会按年龄计算我的计数,但我无法弄清楚如何按年龄降序,或添加有条款。

3 个答案:

答案 0 :(得分:11)

尝试类似:

Person.select("id, age").group(:id, :age).having("count(id) > 1").order("age desc")

答案 1 :(得分:1)

Person.select('COUNT(1) as people_count').order('age DESC').group(:age).having('people_count > 1')

答案 2 :(得分:1)

我发现其他答案对我不起作用。我不得不做这样的事情

Person.group(:age).having('count(*) > 1').order('age desc').count