暂时未有相关云产品技术能力~
大学生一枚~
2023年06月
在“找出各项考试中的佼佼者”这题目中,我觉得挺有意思的。我用的是子查询和联结的方式。
SELECT t.name AS test_name, s.name AS student_name, ta.score FROM TestAttempt ta JOIN Student s ON s.id = ta.studentId JOIN Test t ON t.id = ta.testId WHERE ( SELECT COUNT(DISTINCT score) FROM TestAttempt WHERE testId = ta.testId AND score > ta.score ) < 3 AND ( SELECT MAX(score) FROM TestAttempt WHERE studentId = ta.studentId ) = ta.score ORDER BY t.name, ta.score DESC 这个查询语句使用了子查询和联结操作,实现了按顺序列出每门考试的分数最高的学生,同时包括并列前三名的情况。
具体来说,子查询 (SELECT COUNT(DISTINCT score) FROM TestAttempt WHERE testId = ta.testId AND score > ta.score) < 3 用于过滤出在同一门考试中得分排在第一到第三的学生,而 (SELECT MAX(score) FROM TestAttempt WHERE studentId = ta.studentId) = ta.score 条件用于过滤出每位学生的最高分数记录。