在rails应用程序中查询原始pg GROUP BY

时间:2016-06-28 09:35:01

标签: sql ruby-on-rails ruby-on-rails-3 activerecord pg

我有一个非常简单的SQL查询,我试图在rails控制台中执行。

SELECT name, manual_score FROM objectives GROUP BY manual_score

但它会抛出一个错误:

ActiveRecord::StatementInvalid: PG::GroupingError: ERROR:  column "objectives.name" must appear in the GROUP BY clause or be used in an aggregate function

我尝试过将表名添加到列中,但错误仍然存​​在。任何帮助都会得到帮助。谢谢!

1 个答案:

答案 0 :(得分:2)

问题是您列出了一个不是"分组"的列。您应该将name添加到GROUP BY或将其从选择中删除。

SELECT name, manual_score FROM objectives GROUP BY name, manual_score
-- OR
SELECT manual_score FROM objectives GROUP BY manual_score
-- OR
SELECT COUNT(name), manual_score FROM objectives GROUP BY manual_score

为什么必须将列添加到group by或使用聚合函数?想象一下,您有以下数据:

name       |  manual_score
one        |  1
two        |  1
three      |  2

现在,尝试按manual_score对元素进行分组,并考虑如何显示与name对应的manual_score=1列。