【问题标题】:ORA-00934: "Group funtion is not allowed here"ORA-00934: “此处不允许使用组功能”
【发布时间】:2021-04-24 12:03:23
【问题描述】:

我一般对 SQL 和数据库比较陌生,你能解释一下我在这里做错了什么吗?我正在尝试在我的作业中为 Netflix 实现一个数据库。 这是详细信息表的架构:

我想列出所有最新的电影。 Content_ID 是分配给内容表中每个电影/节目的编号。我这样写了我的查询:

您能解释一下正确的方法吗?

【问题讨论】:

  • 您的问题完全不清楚。 “电影”与您展示的数据有什么关系?

标签: sql database oracle


【解决方案1】:

不能将 Group 函数与 where 子句一起使用。

您想在分组之前过滤行使用 where 谓词,如果您想过滤掉由 group by 子句创建的组,请使用 Have 子句。

SELECT CONTENT_ID
FROM DETAILS
WHERE DATE_ADDED = ( SELECT MAX(DATE_ADDED) FROM DETAILS)
GROUP BY CONTEN_ID

Where 子句仅使用谓词限制从表中获取的行,它不适用于一组行,这就是您收到此错误的原因。

ORA - 00934: group function is not allowed here.

但是如果你想在你的谓词中聚合数据,那么使用子查询就像

WHERE date_added = ( scalar subquery returning single row of date_added)

或

WHERE date_added IN (multiple-row subquery return date_added)

如果你想在使用 group by 子句后过滤掉组,那么 使用有。

SELECT department_id, MAX(salary) FROM employees 
GROUP BY department_id 
HAVING MAX(salary) > 5000;

【讨论】:

  • 知道了!非常感谢老兄! :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-03-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-20
相关资源
最近更新 更多