Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/81.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql rails应用程序中的原始pg分组查询_Sql_Ruby On Rails_Ruby On Rails 3_Activerecord_Pg - Fatal编程技术网

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
列,这很有效!!感谢您的快速回复和解释。