我的Person类有0个或更多个小部件关联
class Person < ActiveRecord::Base
has_many :widgets
end
我想列出有X小部件的人数,即:
Num of widgets | Num of people
0 | 10
1 | 34
2 | 0
...
100 | 20
(即34个人有1个小部件等)。
到目前为止,我付出了最大的努力:
Person.joins(:widgets).group('people.id').select('people.id, count(widget_id) as widget_count').group('widget_count')
但我收到了
Mysql2::Error: Can't group on 'widget_count'
答案 0 :(得分:1)
原始SQL查询应如下所示(在PostgreSQL中测试):
SELECT a.widget_count, COUNT(a.widget_count) FROM
(SELECT p.id, COUNT(w.id) AS widget_count FROM Person p JOIN Widget w ON w.person_id = p.id GROUP BY p.id)
AS a
GROUP BY a.widget_count
答案 1 :(得分:0)
我对语法无法帮助你,因为这不是我强大的套件。但是知道SQL你可能想要交换计数。 你在想什么实际上是人民。都是。
希望这有助于您的思路。