繁体   English   中英

Oracle查询从表中找到最大值(gpa)?

[英]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_namemajor )和表情,让每一个组线的单行表中的结果(即,聚集函数,例如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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM