SQL 查询:查询学生平均成绩

  编程萌新,因为遇到这么个SQL 查询的问题:在一张表A里有如下字段:学生姓名、学科名、学科成绩。写一条SQL 语句查出各科平均成绩并按学生姓名分组,按如下格式显示:学生姓名|语文|数学|英语。一开始遇到的时候挺懵的,有印象但是却忘了怎么写了,接下来就是查阅资料并亲自上手测试是否可行~

  第一次代码修修改改如下,此时还是在只用一张表来查询(无法实现上述目标结果,贴图只是为了说明下思考路线):

1 1 select UName, 2 2 (select AVG(Grades) from UserInfo where GName = '语文') as '语文', 3 3 (select AVG(Grades) from UserInfo where GName = '数学') as '数学', 4 4 (select AVG(Grades) from UserInfo where GName = '英语') as '英语' 5 5 from UserInfo 6 6 where UName = '小明' 7 7 group by UName 8 8 /*having GName = '语文' and GName = '数学' and GName = '英语'*/ 9 9 order by AVG(Grades) 1010 go

  然后查阅资料也没有头绪,就想只用一张表是否真的可行,要不用两张表试一下?接下来就是在原表A(实际为如下代码中 UserInfo表)基础上插入一个 学生id 的字段,然后新建一张学生表(T_User),拥有两个字段:id、姓名,学生表的id匹配表A里的学生id,查询语句通过连接实现(因为是思考一个问题,就不考虑内外或者交叉连接的问题了),代码如下:

11 select UName, 22 (select AVG(Grades) from UserInfo where GName = '语文' and UName = tu.name) as '语文', 33 (select AVG(Grades) from UserInfo where GName = '数学' and UName = tu.name) as '数学', 44 (select AVG(Grades) from UserInfo where GName = '英语' and UName = tu.name) as '英语' 55 from UserInfo as ui join T_User as tu 66 on ui.UName = tu.name 77 group by ui.UName,tu.name 88 go

  运行测试如下:

  成功!研究并解决差不多花了1个多小时,可能资质不行,但是会继续努力。从简单入手,从萌新出发~

点赞
收藏

评论区

加载中...

相关推荐

手写Java HashMap源码

HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22

这道SQL有一点...不一样?

原题目从课程表(课程号,课程名)学生表(学号,年龄,性别,课程号,分数)中查询出平均分大于60分的学生的学号及课程成绩最初尝试一开始不太会做,直接在网络上搜索答案,找到的却只有这样的题目答案sqlSELECTsid,AVG(sscore)FROMscoreGROUPBYsidHAVINGavg(sscore)60单表操作

SQL一些面试题

1\.用一条SQL语句查询出每门课都大于80分的学生姓名namekechengfenshu张三语文81张三数学75李四语文76李四数学90王五语文81王五数学100王五英语90A:selectdistinctname

java面试之n+1问题

在一对多或者多对多的时候。如果通过一的一方取获得多的一方的数据。除了第一次查询表的数据以外。每获得一条多的一方的数据就查询一次。如:通过学生表的记录查询成绩表的记录。一个学生就查询一次,50个学生就查询50次。如果需要查询50个学生的成绩,需要查询数据库的次数为第一次查询学生的记录50次查询成绩的记录。这个情况我们成为N1.//需求:

SQL题目

Student(S,Sname,Sage,Ssex)学生表      S:学号;Sname:学生姓名;Sage:学生年龄;Ssex:学生性别Course(C,Cname,T)课程表                   C,课程编号;Cname:课程名字;T:教师编号SC(S,C,score)成绩表              

自由编程——对输入内容排序(字符串拆分、对象比较)

题目:从键盘上输入以下的数据:"TOM:89|JERRY:90|TONY:95",数据格式为“姓名:成绩|姓名:成绩|姓名:成绩”,对输入的内容按成绩进行排序,并将结果按成绩由高到低排序。第一步,通过阅读题目,对TOM:89|JERRY:90|TONY:95以“|”拆分后是,TOM:89、JERRY:90和TONY:95,对应三个学生对象,所以要有一个学生类

SQL 查询:查询学生平均成绩 - HelloWorld