1. 怎样从表中选择出第200到第300条的记录
select top 300 * from Table
except
select top 200 * from Table
2. 一个表记录了学生某科的成绩A(StudentName, Grade), 要按分数排序并增加列“名次(rank)”。 查询语句该怎么写?
select A.name, A.grade,
RANK() over (order by grade desc) rank
from dbo.student A
也可用dense_rank(),这个是表示当有并列名次时,下一个排名仍然只增1,比如说有两个并列1名,那么第2的分数为第2名,而不是第3名。
3. 假设第2题中,这个表记录了不同课程所有学生的记录B(StudentName, CourseName, Grade),那么要按课程分组并求名次。查询语句可以这样写
select A.name, A.course, A.grade,
RANK() over (partition by course order by grade desc) rank
from dbo.student A