我有两张桌子。
Student (Roll_id,Student_name)
Student_mark (roll_id, semester, marks, subject)
我想要使用这两个表在学期和科目方面获得最高分的学生详细信息,他们的 roll_id、mark、semester、subject 是明智的。
我们可以在不使用光标的情况下获得结果吗?
我有两张桌子。
Student (Roll_id,Student_name)
Student_mark (roll_id, semester, marks, subject)
我想要使用这两个表在学期和科目方面获得最高分的学生详细信息,他们的 roll_id、mark、semester、subject 是明智的。
我们可以在不使用光标的情况下获得结果吗?
您可以使用RANK()函数按分数对学生进行排序(按学期和学科划分):
WITH RankedResults AS
( SELECT s.Roll_ID,
s.Student_Name,
sm.Semester,
sm.Subject,
sm.Marks,
StudentRank = RANK() OVER(PARTITION BY sm.Semester, sm.Subject ORDER BY sm.Marks DESC)
FROM Student s
INNER JOIN Student_Mark sm
ON s.Roll_ID = sm.Roll_ID
)
SELECT Roll_ID, Student_name, Semester, Subject, Marks
FROM RankedResults
WHERE StudentRank = 1;