查询每个学生的所选课程的最高成绩并列出学号

Y 1 2019-04-27 01:17:32



谢谢大佬!
...全文
1233 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
Hello World, 2019-04-27
  • 打赏
  • 举报
回复

不知道是不是要这样的?

SELECT s.学号,
s.姓名,
score.课程编号,
score.课程名称,
score.分数
FROM studen_info s
INNER JOIN grade g ON s.学号 = g.学号
CROSS APPLY(SELECT g2.课程编号, g2.分数, c.课程名称
FROM grade g2
INNER JOIN curriculum c ON g2.课程编号 = c.课程编号
WHERE g2.学号 = g.学号 AND g2.分数 = MAX(g.分数))score
GROUP BY s.学号,
s.姓名;
Y 1 2019-04-27
  • 打赏
  • 举报
回复
第四题,谢谢大佬!
Y 1 2019-04-27
  • 打赏
  • 举报
回复
交互式SQL的使用 环境:WINDOWS,Microsoft SQL Server 实验要求: 1,创建Student数据库,包括Students,Courses,SC表,表结构如下: Students(SNO,SNAME,SEX,BDATE,HEIGHT,DEPARTMENT) Courses(CNO,CNAME,LHOUR,CREDIT,SEMESTER) SC(SNO,CNO,GRADE) (注:下划线表示主键,斜体表示外键),并插入一定数据。 2.完成如下的查询要求及更新的要求。 (1)查询身高大于1.80m的男生的学号和姓名; (2)查询计算机系秋季所开课程课程号和学分数; (3)查询选修计算机系秋季所开课程的男生的姓名、课程号、学分数、成绩; (4)查询至少选修一门电机系课程的女生的姓名(假设电机系课程课程号以EE开头); (5)查询每位学生已选修课程的门数和总平均成绩; (6)查询每门课程选课的学生人数,最高成绩,最低成绩和平均成绩; (7)查询所有课程成绩都在80分以上的学生的姓名、学号、且按学号升序排列; (8)查询成绩学生的姓名,缺成绩课程号及其学分数; (9)查询有一门以上(含一门)三个学分以上课程成绩低于70分的学生的姓名; (10)查询1984年~1986年生的学生的姓名,总平均成绩及已修学分数。 (11) 在STUDENT和SC关系中,删去SNO以’01’开关的所有记录。 (12)在STUDENT关系中增加以下记录: (13)将课程CS-221的学分数增为3,讲课时数增为60 3.补充题: (1) 统计各系的男生和女生的人数。 (2) 列学习过‘编译原理’,‘数据库’或‘体系结构’课程,且这些课程成绩之一在90分以上的学生的名字。 (3) 列未修选‘电子技术’课程,但选修了‘数字电路’或‘数字逻辑’课程学生数。 (4) 按课程排序列所有学生成绩,尚无学生选修的课程,也需要列,相关的学生成绩用NULL表示。 (5) 列平均成绩最高学生名字和成绩。(SELECT句中不得使用TOP n子句) 4.选做题:对每门课增加“先修课程”的属性,用来表示某一门课程的先修课程,每门课程应可记录多于一门的先修课程。要求: 1) 修改表结构的定义,应尽量避免数据冗余,建立必要的主键,外键。 2) 设计并插入必要的测试数据,完成以下查询: 列有资格选修数据库课程的所有学生。(该学生已经选修过数据库课程的所有先修课,并达到合格成绩。) 注意:须设计每个查询的测试数据,并在查询之前用INSERT语句插入表中。 提交作业形式: 1) 建立Student数据库的SQL脚本,插入所有数据项的SQL脚本(包括所有的测试数据)。 2) 完成查询要求的SQL语句脚本。 3) 选做题:须提交修改数据库表定义的SQL脚本,插入测试数据的SQL脚本以及用于查询的SQL语句。

34,873

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧