SQL根据成绩查找学生姓名

SQL根据成绩查找学生姓名,sql,oracle,Sql,Oracle,我试图打印每个学生的名字,有一个以上的2年级。成绩是CLASSSTUDENT表中的整数。Oracle数据库。 迄今为止的代码: SELECT DISTINCT FIRSTNAME, LASTNAME FROM PERSON JOIN STUDENT ON PERSON.PERSONID = STUDENT.STUDENTID JOIN CLASSSTUDENT ON STUDENT.STUDENTID = CLASSSTUDENT.STUDENTID WHERE FINALGRADE =

我试图打印每个学生的名字,有一个以上的2年级。成绩是CLASSSTUDENT表中的整数。Oracle数据库。 迄今为止的代码:

SELECT DISTINCT FIRSTNAME, LASTNAME 
FROM PERSON  
JOIN STUDENT ON PERSON.PERSONID = STUDENT.STUDENTID 
JOIN CLASSSTUDENT ON STUDENT.STUDENTID = CLASSSTUDENT.STUDENTID
WHERE FINALGRADE = 2;

这使得学生的成绩达到2级。我必须如何更改查询以获得一个以上2年级的学生?

我相信它会是这样的:

 SELECT FIRSTNAME, LASTNAME, COUNT(*)
 FROM PERSON  
 JOIN STUDENT ON PERSON.PERSONID = STUDENT.STUDENTID 
 JOIN CLASSSTUDENT ON STUDENT.STUDENTID = CLASSSTUDENT.STUDENTID
 WHERE FINALGRADE = 2
 GROUP BY FIRSTNAME, LASTNAME
 HAVING COUNT(*) >= 2;
或者更简单地说:

SELECT FirstName, LastName
FROM Person p
INNER JOIN ClassStudent cs ON cs.StudentID = p.PersonID
WHERE cs.FinalGrade = 2
GROUP BY cs.StudentID, FirstName, LastName
HAVING COUNT(*) > 1

虽然我更喜欢前者,因为我自己并不完全理解可能与只对主键进行分组有关,或者只使用组来过滤记录有关。。。但实际上,不知怎么的,这感觉更正确。

提示:分组。有。我尝试过按名字添加组,有COUNT CLASSSTUDENT.FINALGRADE>1;但是我错了,你可以在哪里发布PERSON、STUDENT和CLASSSTUDENT表的表结构?ORA-00905:缺少关键字00905。00000-缺少关键字WHERE/GROUP BY出现故障。再试一次
SELECT FirstName, LastName
FROM Person p
INNER JOIN ClassStudent cs ON cs.StudentID = p.PersonID
WHERE cs.FinalGrade = 2
GROUP BY cs.StudentID, FirstName, LastName
HAVING COUNT(*) > 1