我从最大列中获取行时遇到问题,这里是插图:http ://sqlfiddle.com/#!3/15207/9
基本上我想获得学生的最高成绩以及成绩ID(gid)。但查询不正确,因为使用将返回 2 的最大等级 id。
第一门课,学生得了 D(1 分)。第二次参加课程,学生获得 E(0 分)。
该 1 点的 Gradeid 为 1。
我希望查询结果是:1(userid),1(subjectid),1(gradeid),1(score)
谢谢
更新 01:
我从最大列中获取行时遇到问题,这里是插图:http ://sqlfiddle.com/#!3/15207/9
基本上我想获得学生的最高成绩以及成绩ID(gid)。但查询不正确,因为使用将返回 2 的最大等级 id。
第一门课,学生得了 D(1 分)。第二次参加课程,学生获得 E(0 分)。
该 1 点的 Gradeid 为 1。
我希望查询结果是:1(userid),1(subjectid),1(gradeid),1(score)
谢谢
更新 01:
更新 1
WITH highestScore
AS
(
SELECT a.uid StudentID,
a.uname StudentName,
b.Score,
c.cname CourseName,
c.semester,
d.sname SubjectName, d.sid,
DENSE_RANK() OVER (PARTITION BY a.uid, d.sid
ORDER BY b.Score DESC) rn
FROM Users a
INNER JOIN Grades b
ON a.uid = b.uid
INNER JOIN Courses c
ON b.cid = c.cid
INNER JOIN Subjects d
ON c.sid = d.sid
)
SELECT StudentID, StudentName, CourseName, semester,
SubjectName, Score
FROM highestScore
WHERE StudentID = 1 AND -- StudentID
sid = 1 AND -- SubjectID
RN = 1 -- leave this as is (rank of the highest score)