0

我正在尝试查询 GPA 最高的学生的姓名、专业和 gpa。可以有不止一名学生。

SELECT student_name, major, MAX(gpa)
FROM Student;

我不断得到:

ERROR at line 1:
ORA-00937: not a single-group group function

我在 Google 上搜索我应该删除一个组函数(我没有,但尝试添加)或添加一个包含列出的所有单个列表达式的 group by 子句。

我也尝试过 group by 子句:

SELECT student_name, major, MAX(gpa)
FROM Student
GROUP BY student_name;

我得到了错误:

ERROR at line 1:
ORA-00979: not a GROUP BY expression

有人可以指出我正确的方向吗?

4

1 回答 1

0

您不能将表中每行给出单行结果的表达式(例如,在您的情况下,student_name和)和表中的每组行major给出​​单行结果的表达式(即聚合函数,如你的情况)。在这种情况下应该输出多少行?MAX(gpa)

您需要将查询分解为两个逻辑部分 - 一个查找最高 GPA,第二个查找所有具有此 GPA 的学生。一种方法是在子句的子查询中使用聚合表达式IN

SELECT student_name, major, gpa
FROM   student
WHERE  gpa IN (SELECT MAX(gpa) FROM student)
于 2013-10-09T05:58:26.960 回答