我有一个非常简单的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
我尝试过将表名添加到列中,但错误仍然存在。任何帮助都会得到帮助。谢谢!
答案 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
列。