[英]Oracle query to find largest value (gpa) from table?
我正在尝试查询GPA最高的学生的姓名,专业和gpa。 可以有多个学生。
SELECT student_name, major, MAX(gpa)
FROM Student;
我不断得到:
ERROR at line 1:
ORA-00937: not a single-group group function
我用Google搜索说,应该删除一个group函数(我没有,但是尝试添加),或者添加一个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
有人可以指出我正确的方向吗?
不能混合表达式这给每行一行结果在表(例如,你的情况, student_name
和major
)和表情,让每一个组线的单行表中的结果(即,聚集函数,例如MAX(gpa)
)。 在这种情况下应输出多少行?
您需要将查询分为两个逻辑部分-一个发现最高的GPA,第二个发现所有具有这样的GPA的学生。 一种实现方法是在IN
子句的子查询中使用聚合表达式:
SELECT student_name, major, gpa
FROM student
WHERE gpa IN (SELECT MAX(gpa) FROM student)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.