Sql rails应用程序中的原始pg分组查询
我有一个非常简单的Sql rails应用程序中的原始pg分组查询,sql,ruby-on-rails,ruby-on-rails-3,activerecord,pg,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 a
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
我尝试用列作为表名的前缀,但错误仍然存在。任何帮助都会被拒绝。谢谢 问题是您列出的列不是“分组”列。您应该将
name
添加到groupby
或将其从选择列表中删除
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
为什么必须通过或使用聚合函数将列添加到您的分组中?假设您拥有以下数据:
name | manual_score
one | 1
two | 1
three | 2
现在,尝试按manual\u score
对元素进行分组,并考虑如何显示与manual\u score=1
对应的name
列,这很有效!!感谢您的快速回复和解释。