我正在尝试查询GPA最高的学生的姓名,专业和gpa。可以有不止一个学生。
SELECT student_name, major, MAX(gpa)
FROM Student;
我一直在:
ERROR at line 1:
ORA-00937: not a single-group group function
我用谷歌搜索我应该删除一个组函数(我没有,但尝试添加)或添加一个包含列出的所有单个列表达式的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
有人可以指出我正确的方向吗?
答案 0 :(得分:0)
你不能混合表格中每行给出单行结果的表达式(例如,在你的情况下,student_name
和major
)和表达式,每个表格中的一组行(即聚合函数,如您的案例中的MAX(gpa)
)。在这种情况下应该输出多少行?
您需要将查询分解为两个逻辑部分 - 一个找到最高GPA,第二个找到所有具有此类GPA的学生。一种方法是在IN
子句的子查询中使用聚合表达式:
SELECT student_name, major, gpa
FROM student
WHERE gpa IN (SELECT MAX(gpa) FROM student)