I have a table: people
with a column named: age
.
How can I get a count of the people with each age, ordered from oldest to youngest, filtered by ages with at least 2 people in it?
How I would write it in raw SQL:
SELECT COUNT(1) AS people_count, age FROM people GROUP BY age HAVING people_count > 1 ORDER BY age DESC
In Rails (I'm not sure how to do it):
Person.group(:age).count
will get me the counts by age
, but I can't figure out how to order it descendingly by age, or add the having
clause.
Try something like:
Person.select("id, age").group(:id, :age).having("count(id) > 1").order("age desc")
I find the other answers didn't work for me. I had to do something like this
Person.group(:age).having('count(*) > 1').order('age desc').count
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With