sql语句的使用——查询每个学生的总分和平均分,有一张表

selectsno,total(grade)atotal,avg(grade)averagefromgroupbysno

SQL求每个学生平均成绩

选择,学号,s,姓名,c,课程名称,t,平均成绩

fromstudentass

leftjion

(

selectavg(分数)作为平均成绩,学生ID

fromscgroupby学生ID

)astont,学生ID=s,学生ID

leftjoinsconsc。
StudentID=s,StudentID

leftjoincourseasconc。
课程号=sc,课程号

功能:

SQL具有数据定义、数据操作和数据控制的功能。

1.SQL数据定义功能:可以定义数据库的三级模式结构,即外部模式、全局模式和内部模式结构。
在SQL中,外部模式也称为视图,全局模式称为模式。
内部模式是系统根据数据库模式自动实现的,一般不需要用户干预。

2.SQL数据操作功能:包括基本表和视图的数据插入、删除和修改,尤其是强大的数据查询功能。

以上内容参考:百度百科-结构化查询语言

sql同时查询学生平均分和课程平均分?

没什么好说的,我们直接上代码;接下来代码分析

SELECTStu.snameASname;cou.cnameAS课程名称;sco.DegreeAS结果,t3.AvgDegreeAS每人平均分;t4.AvgDegreeAS每门课程的平均分数ASStudentStuINNERJoin分数scoONStu.sno=sco.snoINNERJOIN课程couONcou.cno=sco.cnoINNERJOIN(SELECTt1.sno,t1.sname,AVG(t2.Degree))AS平均学位FROM学生t1内部分数t2INt1.sno=t2.snoGROUPBYt1.sno,t1.sname)t3ONStu.sno=t3.snoINNERJOIN(SELECTcno,AVG(Degree)ASAvgDegreeFROMScoreGROUPBYcno)t4ONsco.cno=t4.cno

代码分析:

核心这道题是如何用一行代码计算出每个人的平均分一个人以及每门课程的平均成绩

现在我们需要使用临时表T3和T4

临时表T3用于计算每个人的平均成绩

临时表T4用于计算每门课程的平均分