用游标如何实现
请教下大家:
如果有一张成绩表,成绩表中包含了五个科目的成绩,相当于一个学生有五条记录在里面,那么如果要得到每个成绩的前三名。用游标如何实现呢?
------解决方案--------------------用什么游标?
select top 3 * from table where 科目 = 要查询的科目 order by 成绩
------解决方案--------------------select top 3 * from t_table
where
classname = 'math'
order by score_math desc
------解决方案--------------------id 学号 科目 成绩
id stu_id subject score
1 1 a 90
2 1 b 80
3 1 c 87
4 2 a 78
5 2 b 98
6 2 c 88
7 3 a 60
8 3 b 67
9 3 c 76
10 4 a 99
11 4 b 98
12 4 c 87
13 5 a 67
14 5 b 76
15 5 c 78
select * from
(
select
stu_id ,
subject,
score,
rank() over (partition by subject order by score desc) as row_num
from tscore
) t
where t.row_num < 4
stu_id subject score row_num
4 a 99 1
1 a 90 2
2 a 78 3
4 b 98 1
2 b 98 1
1 b 80 3
2 c 88 1
1 c 87 2
4 c 87 2