sql server查询每门课程的前两名的学生编号,课程编号,成绩并排序
2011-05-06 16:33
399 查看
数据结构介绍:
成绩表(编号,学号,科目编号,成绩)
SQL基础了解:
select * from 成绩表
对于Sql Server它查询的过程是逐条查询的,也就是一条一条记录进行查询的;
那么我们可以先思考下,当它查“成绩表”时,第一条成功后才查询第二条的;
假设查特定的一门科目的最高分值前2条记录:
select top 2 * from 成绩表 where 科目编号=1 order by 成绩 DESC
那么当要查询每一门科目成绩的前两条,就可以这样思考:
select 查询到第一条时,会得到 (编号,学号,科目编号,成绩),
那么这一条记录是否符当前成绩是当前科目最高分的前两条件呢?
上边已经处理为取前两条的方法了,那么这里进行下应该就可以了:
select 学号,科目编号,成绩 from 成绩表 AS A
where 学号 in
(
select top 2 学号 from 成绩表 AS B where B.科目编号=A.科目编号 order by 成绩 DESC)
上面的脚本可以理解为:
因为查询是逐条的,所以(黄色区域)可以理解为,当第一条数据获取后就进行条件判断;
学号是否存在于当前记录中科目最高成绩的前两条;
子查询部分就是当前这条记录的科目最高成绩的前两个学号
成绩表(编号,学号,科目编号,成绩)
SQL基础了解:
select * from 成绩表
对于Sql Server它查询的过程是逐条查询的,也就是一条一条记录进行查询的;
那么我们可以先思考下,当它查“成绩表”时,第一条成功后才查询第二条的;
假设查特定的一门科目的最高分值前2条记录:
select top 2 * from 成绩表 where 科目编号=1 order by 成绩 DESC
那么当要查询每一门科目成绩的前两条,就可以这样思考:
select 查询到第一条时,会得到 (编号,学号,科目编号,成绩),
那么这一条记录是否符当前成绩是当前科目最高分的前两条件呢?
上边已经处理为取前两条的方法了,那么这里进行下应该就可以了:
select 学号,科目编号,成绩 from 成绩表 AS A
where 学号 in
(
select top 2 学号 from 成绩表 AS B where B.科目编号=A.科目编号 order by 成绩 DESC)
上面的脚本可以理解为:
因为查询是逐条的,所以(黄色区域)可以理解为,当第一条数据获取后就进行条件判断;
学号是否存在于当前记录中科目最高成绩的前两条;
子查询部分就是当前这条记录的科目最高成绩的前两个学号
相关文章推荐
- 查询课程编号以'c05'开头,被3名及以上学生选修且期末成绩的平均分高于75分的课程号、选修人数和期末成绩平均分,并按平均分降序排序
- 常用的学生、课程、成绩、教师表的查询
- Tsql案例: 题库,学生课程成绩相关查询
- sql:查询课程号'0312091006'成绩排名第5到第10之间的学生学号
- 查询每门课程成绩都大于80分学生的姓名
- 一个SQL查询出每门课程的成绩都大于80的学生姓名
- 查询每门课程成绩都大于80分学生的姓名
- 查询前两名学生的成绩的信息(转载)
- Sql -- 练习1 查询每科成绩前两名的学生信息
- 常用的学生、课程、成绩、教师表的查询
- 查询各课程成绩第一的学生的信息
- 常用的sql语句,学生、课程、成绩、教师表的查询
- 问题:设计一个大学教师和学生管理程序, 教师包括 编号、姓名、职称和教研室 数据的输入输出; 大学生包括编号、姓名、性别、班号、英语、高等数学和数据结构三门课程成绩的输入输出和计算平均分; 研究生包
- 一个SQL查询出每门课程的成绩都大于80的学生姓名
- 查询每门课程最高分的学生的学号,课程号,成绩
- >如果有年纪为S2的学生,就查询参加S2学科考试的学员学号,科目编号,考试成绩,考试时间
- mysql经典问题四表查询(教师,学生,成绩,课程表)
- C语言课程设计. 根据学号等信息查询学生成绩
- 关于学生成绩的sql server 查询操作 经典实用实例
- 关于学生成绩的sql server 查询操作 经典实用实例