ID_S STUDENT_ID GRADE
1 1 22
2 1 33
3 1 44
4 1 55
5 2 66
6 2 22
7 2 33
8 2 44
9 3 55
10 3 66
11 3 22
12 3 33
13 4 44
14 4 55
15 4 66
16 4 22
17 5 33
18 5 44
19 5 55
20 5 66
我必须提取5个学生的第二高分数(每个学生有四个不同的分数)。该表应如下所示:
Student_id Grades
1 44
2 44
3 55
4 55
5 55
但第一个学生的成绩是55分。
这是我代码:
select student_id, max(grade) as "second highest grades" from grade_list7
where grade not in (select max(grade) from grade_list7)
group by student_id;
这到底是怎么回事?
3条答案
按热度按时间4bbkushb1#
这里需要类似于
RANK()
的解析函数:两个或多个等级并列的问题在这里可能很重要,您可能希望使用
DENSE_RANK()
而不是RANK()
,这取决于您想要的行为。tvmytwxo2#
您的subselect需要获取specidifc用户的max,因此您需要添加stundet id
也可以使用RANK方法或Maybe DENSE_RANK
第一个
小提琴
v6ylcynt3#
也许这可能行得通: