按学生年级分组,取各年级前两名的学生信息
SELECT *
FROM (SELECT ST.ID, ST.GRADE, ST.NAME, ST.SCORE
FROM STUDENTS ST
JOIN (SELECT MAX(SCORE) AV, GRADE FROM STUDENTS GROUP BY GRADE) T ON ST.GRADE =
T.GRADE
WHERE ST.SCORE = T.AV
UNION ALL
SELECT ST.ID, ST.GRADE, ST.NAME, ST.SCORE
FROM STUDENTS ST
JOIN (SELECT MAX(SCORE) AV, GRADE
FROM (SELECT ST.ID, ST.GRADE, ST.NAME, ST.SCORE, T.AV
FROM STUDENTS ST
JOIN (SELECT MAX(SCORE) AV, GRADE
FROM STUDENTS
GROUP BY GRADE) T ON ST.GRADE = T.GRADE
WHERE ST.SCORE != T.AV)
GROUP BY GRADE) T ON ST.GRADE = T.GRADE
WHERE ST.SCORE = T.AV)
ORDER BY GRADE
SELECT *
FROM (SELECT ST.ID, ST.GRADE, ST.NAME, ST.SCORE
FROM STUDENTS ST
JOIN (SELECT MAX(SCORE) AV, GRADE FROM STUDENTS GROUP BY GRADE) T ON ST.GRADE =
T.GRADE
WHERE ST.SCORE = T.AV
UNION ALL
SELECT ST.ID, ST.GRADE, ST.NAME, ST.SCORE
FROM STUDENTS ST
JOIN (SELECT MAX(SCORE) AV, GRADE
FROM (SELECT ST.ID, ST.GRADE, ST.NAME, ST.SCORE, T.AV
FROM STUDENTS ST
JOIN (SELECT MAX(SCORE) AV, GRADE
FROM STUDENTS
GROUP BY GRADE) T ON ST.GRADE = T.GRADE
WHERE ST.SCORE != T.AV)
GROUP BY GRADE) T ON ST.GRADE = T.GRADE
WHERE ST.SCORE = T.AV)
ORDER BY GRADE