1412.(Hard)查找成绩处于中游的学生

表: Student

+---------------------+---------+
| Column Name         | Type    |
+---------------------+---------+
| student_id          | int     |
| student_name        | varchar |
+---------------------+---------+
student_id 是该表主键.
student_name 学生名字.

表: Exam

+---------------+---------+
| Column Name   | Type    |
+---------------+---------+
| exam_id       | int     |
| student_id    | int     |
| score         | int     |
+---------------+---------+
(exam_id, student_id) 是该表主键.
学生 student_id 在测验 exam_id 中得分为 score.

成绩处于中游的学生是指至少参加了一次测验, 且得分既不是最高分也不是最低分的学生

写一个 SQL 语句,找出在 所有 测验中都处于中游的学生 (student_id, student_name)。

不要返回从来没有参加过测验的学生。返回结果表按照 student_id 排序。

查询结果格式如下。

来源:力扣(LeetCode)

链接:https://leetcode-cn.com/problems/find-the-quiet-students-in-all-exams

著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

Solution

重点在于用rank()窗口函数算出正数排名和倒数排名,再选出min都不为1的学生(既没有正数第一也没有倒数第一过)

Table Schema

Last updated

Was this helpful?