编写SQL语句查询出每个各科班分数最高的同学的名字,班级名称,课程名称,分数

这个问题是在csdn上一位朋友写的,但是答案有点复杂,而且查询使用的效率也不是很好,于是自己也写了一个。以下是表结构和数据,

有以下两张表,Class表 classid classname1 高三(一)班2 高三(二)班3 高三(三)班Student表studentid   studentName classid1    张三            22     李四           13    王五             14    赵六             35    钱七             26     孙九          3score表scoreid course studentid score1 数学 2 992 数学 3 603 数学 4 804 语文 5 795 语文 6 586  语文 1 667  英语 6 768 英语 4 879 英语 3 10010 英语 2 69编写SQL语句查询出每个各科班分数最高的同学的名字,班级名称,课程名称,分数(问题有点绕口)

朋友的答案:

if exists(select count(*) from sysobjects where type='U' and name='#temp')    drop table #tempselect p.studentid,studentname,p.classid,classname,course,score into #temp from       (   select studentid,studentname,student.classid,classname           from student right outer join class on student.classid=class.classid) as p    left outer join score  on p.studentid=score.studentidselect   (select top 1 studentname from  #temp where classname=x.classname and course=x.course order by score  desc) as '姓名',classname as '班级',course as '课程',max(score) as '分数'       from  #temp x group by classname,course order by classname

我自己的答案:

select t.classname,course,max(score) 'score',min(t.studentName) 'studentName' from (select s.studentName,c.classname,r.course,r.score from student s inner join class c on s.classid=c.classid inner join score r on r.studentid=s.studentid ) as t  group by classname,course

这个问题是在csdn上一位朋友写的,但是答案有点复杂,而且查询使用的效率也不是很好,于是自己也写了一个。以下是表结构和数据,

有以下两张表,Class表 classid classname1 高三(一)班2 高三(二)班3 高三(三)班Student表studentid   studentName classid1    张三            22     李四           13    王五             14    赵六             35    钱七             26     孙九          3score表scoreid course studentid score1 数学 2 992 数学 3 603 数学 4 804 语文 5 795 语文 6 586  语文 1 667  英语 6 768 英语 4 879 英语 3 10010 英语 2 69编写SQL语句查询出每个各科班分数最高的同学的名字,班级名称,课程名称,分数(问题有点绕口)

朋友的答案:

if exists(select count(*) from sysobjects where type='U' and name='#temp')    drop table #tempselect p.studentid,studentname,p.classid,classname,course,score into #temp from       (   select studentid,studentname,student.classid,classname           from student right outer join class on student.classid=class.classid) as p    left outer join score  on p.studentid=score.studentidselect   (select top 1 studentname from  #temp where classname=x.classname and course=x.course order by score  desc) as '姓名',classname as '班级',course as '课程',max(score) as '分数'       from  #temp x group by classname,course order by classname

我自己的答案:

select t.classname,course,max(score) 'score',min(t.studentName) 'studentName' from (select s.studentName,c.classname,r.course,r.score from student s inner join class c on s.classid=c.classid inner join score r on r.studentid=s.studentid ) as t  group by classname,course


相关内容

  • SQL综合应用学习
  • [日期:2005-07-08]来源:CSDN  作者:[字体:大 中 小] 看完测试完下面这些试题,你的SQL水平一定会有新的提高. 下面我们先看一下题设: 二维表 T(F1,F2,F3,F4,F5,F6,F7) 表示如下关系: ┌─────┬────┬─────┬─────┬─────┬───── ...

  • 数据库原理与应用教程-期末测试题
  • 数据库原理与应用教程 期末测试题(一) 一. 填空题(每空1分,共10分) 1.数据库系统的核心是. 2.在关系模型中,实体以及实体间的联系都是用______来表示的. 3.设关系模型R(A,B ,C) ,F 是R 上的函数依赖集,F={A→B,C→B},则R 的候选码为_________. 4.层 ...

  • 学生信息管理系统(SQL数据库技术)
  • <SQL 数据库技术>课程设计 一.题目:学生成绩管理 二.因为我做的是学生成绩管理,所以数据库中至少有个一个表是来存储学生的各课成绩的.有了学生成绩,得知道这个成绩是哪个学生的,所以此表中也得有学生姓名,但是学生姓名肯定有重复的 ,所以得必须有个标志来惟一标识一个学生,所以得给每个学生 ...

  • 电大试卷-数据库基础与应用汇总
  • 数据库基础与应用期末复习题(归纳整理) 一.填空题 1.Access "表"结构设计窗口分为两个部分,上半部分是 表设计器 ,下半部分是 字段属性 . 2.Access "表"结构设计窗口中上半部分的"表设计器"是由 字段名称 . 数据类型 ...

  • 数据库第三章习题
  • 第3章 SQL 语言习题 一.单项选择题 1.SQL 语言是()的语言,易学习. A .过程化 B. 非过程化 C. 格式化 D. 导航式 D. 非数据库 2.SQL 语言是()语言. A. 层次数据库 B. 网络数据库 C. 关系数据库 3.SQL 语言具有()的功能. A. 关系规范化.数据操纵 ...

  • 数据库应用试题11卷及其答案
  • <数据库系统原理与应用(SQL Server 2000)>试题(B卷) 一.单项选择题(每小题1分,共10分) 1. ( a )是位于用户与操作系统之间的一层数据管理软件,它属于系统软件,它为用 户或应用程序提供访问数据库的方法.数据库在建立.使用和维护时由其统一管理.统一控制. A . ...

  • 教务管理系统设计报告
  • 信息系统工程与实践 <教务管理系统> 设计报告 专业班级: 计本1201班 项目分组: 计本1201班第二组 姓名学号1: 戴明昊1205170107 姓名学号2: 杨新芬1205170130 姓名学号3: 万丽涛1205170102 编写人: 戴明昊1205170107 目录 1引言 ...

  • [数据库基础与应用]形成作业答案
  • <数据库基础与应用>形成性作业 第一次作业 一.单项选择题 1.域是实体中相应属性的(A ). A .取值范围 B .值 C .名称 D .描述 2.把保存关系定义的关系称为对应数据库的(B ). A .一般关系 B .元关系 C .特定关系 D .正常关系 3.在一个关系R 中,若存在 ...

  • 数据库安全与管理实验报告
  • 实验报告 课程名称 数据库原理 实验项目名称 实验6:数据库安全管理 班级与班级代码 实验室名称(或课室) 专 业 计算机科学与技术 任课教师 学 号: 实验日期: 2014年 5月27 日 广东财经大学教务处 制 姓名 实验报告成绩 指导教师(签名) 2014 年 月 日 说明:指导教师评分后,实 ...