错误 - ORA-00979: 不是 GROUP BY 表达式,但在我删除 f.film_no AS "Film Number" 时有效

Posted

技术标签:

【中文标题】错误 - ORA-00979: 不是 GROUP BY 表达式,但在我删除 f.film_no AS "Film Number" 时有效【英文标题】:Error - ORA-00979: not a GROUP BY expression but works when I remove f.film_no AS "Film Number" 【发布时间】:2020-03-30 11:34:33 【问题描述】:
SELECT  f.title AS "Film Title",f.film_no AS "Film Number", MIN(c.fee) AS "Lowest Contract Cost"
FROM film f, contract c
WHERE f.film_no = c.film_no
GROUP BY f.title
HAVING MIN(fee) > 7000000;

当我运行它时,它会出现错误 ORA-00979: not a GROUP BY expression 但是当我删除 'f.film_no AS "Film Number" 时它会起作用吗?

这个完全不行

SELECT d.firstnames AS "First Name", COUNT(f.title) AS "Number of Films"
FROM director d, film f
WHERE d.director_id = f.director_id
GROUP BY d.surname
HAVING COUNT(f.title) > 1;

感谢任何帮助

【问题讨论】:

【参考方案1】:

错误不是很明显吗?您在SELECT 中有一个不在GROUP BY 中的未聚合列。因此,您可以使用聚合函数或包含它。

另外,切勿在 FROM 子句中使用逗号。 始终使用正确、明确、标准、可读的JOIN语法。

所以:

SELECT f.title AS "Film Title", f.film_no AS "Film Number",
       MIN(c.fee) AS "Lowest Contract Cost"
FROM film f JOIN
     contract c
     ON f.film_no = c.film_no
GROUP BY f.title, f.film_no
HAVING MIN(fee) > 7000000;

【讨论】:

@Jackawan 。 . .学习使用JOIN!永远不要在 FROM 子句中使用逗号。

以上是关于错误 - ORA-00979: 不是 GROUP BY 表达式,但在我删除 f.film_no AS "Film Number" 时有效的主要内容,如果未能解决你的问题,请参考以下文章

ORA-00979: 在使用子查询查询视图时不是 GROUP BY 表达式

错误 - ORA-00979: 不是 GROUP BY 表达式,但在我删除 f.film_no AS "Film Number" 时有效

为啥这不起作用? ORA-00979: 不是 GROUP BY 表达式

得到 ORA-00979: 不是没有任何聚合函数的 GROUP BY 语句

ORA-00979: 不是 GROUP BY 表达式

ORA-00979: 不是 GROUP BY 表达式