【问题标题】:Getting ORA-00979: not a GROUP BY expression error [duplicate]获取 ORA-00979: 不是 GROUP BY 表达式错误 [重复]
【发布时间】:2013-03-19 14:25:09
【问题描述】:

当我尝试在 Oracle 上执行此代码时,我不断收到错误

SELECT id,
       Max(id),
       artist AS"Artist"
FROM   d_songs
WHERE  duration IN( '3 min', '6 min', '10 min' )
HAVING id < 50
GROUP  BY id; 

我做错了什么?就是说这不是按表达式分组的。

【问题讨论】:

  • 你遇到了什么错误?
  • ORA-00979:不是 GROUP BY 表达式是它给我的错误
  • 这是一个微不足道的语法错误。下次遇到此类问题时,请搜索 ORA-code。只有在数百次点击都无法解决您的问题时才提出新问题。

标签: oracle ora-00979


【解决方案1】:

编辑:

编辑后,请从文档中查看:

您试图执行包含 GROUP BY 函数(例如 MIN、MAX、SUM 或 COUNT)的 SELECT 语句。 您试图在 SELECT 列表中执行一个不在 GROUP BY 子句中的表达式。

Group By 放在Having 之前,还包括Group By Clause 中的所有字段(不是最大值)

SELECT id, max(id), artist as "Artist"
From d_songs
Where duration in('3 min', '6 min', '10 min')
where id < 50
Group by id, artist

您可以查看the docs了解更多信息

【讨论】:

  • 嗯,我也试过了,但它仍然给我同样的错误:(
  • @coryharms 您需要在分组中包含所有字段(不包括最大值)
  • 谢谢!那是我做错了。再次感谢。我会标记为答案,但我需要 6 声望大声笑。
  • @coryharms 问题解决了,;)
  • 投票需要 15 声望我猜... :(
猜你喜欢
  • 2013-03-29
  • 2013-06-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-04-24
  • 2011-06-29
  • 2011-06-04
相关资源
最近更新 更多