以“registration”数据库为基础,写出完成下面查询的 SQL 语 句?

1 、查询8 0分以上学生的选课情况,包括学号、课程号和成绩:SELECTStudent.ID,Course.ID,GradeFROMStudent,Course,RegistrationWHEREStudent.ID=Registration.IDANDCo urse.ID=Registration.IDANDGrade>8 0; 2 、询问所有学生的姓名、性别、年龄:SELECTName, Gender, AgeFROMStudent; 3 、查询名为“XX宁”的学生基本信息:SELECT*FROMStudentWHER EName='XX宁'; 4 . 要求课程名称和学分为 2 或 5 分:SELECTName, CreditFROMcourseWHERECreditIN(2 ,5 ); 5 、统计选修C03 课程的学生人数和缺席的学生人数:SELECTCOUNT(*)ATotal,SU M(KESWHENGGradeISNULLTHEN1 ELSE0END)ASnotpresentFROMStudent,RegistrationWHEREStudent.ID=Registration.IDANDCourse.ID='C03 '; 6 、查询平均成绩大于等7 0分以上对应学生的学号和平均成绩:SELECTStudent.ID,AVG(Grade)FROMStudent,Course,RegistrationWHEREStudent.ID=Registration.IDANDCourse.ID=Registration.IDGROUPBYStudent.IDGROUPBYStudentVIDHA)询问学生选课状态,包括姓名、课程名称和成绩:SELECTStudent.Name,Course.Name,GradeFROMStudent,Course,注册比例WHEREStudent.ID=Registration.IDANDCourse.ID=Registration.ID;8 .询问与“工业设计”同系的其他专业信息,包括专业编号、专业名称:SELECTDepartment.ID,Department.NameFROMDepartment,MajorWHEREDepartment.ID=Major.IDANDMajor.Name='工业设计'ANDDepartment.ID!=(SELECTIDFROMMajorWHERENAName=');

如何用SQL查询学生各科成绩的平均分数?

1 、首先打开电脑上的数据库软件。
然后将数据库附加到学生表和成绩单。
2 .然后选择数据库,右键单击并选择新建查询。
在右侧的空框中输入命令选择学生表、学生代码、avg(分数)作为平均分数。
3 .链接学生表和成绩单。
来自学生表的命令连接学生表上的成绩单。
学生人数=成绩单。
学生代码。
4 、使用groupby命令对student表中的学生人数进行分组。
该命令是按照学生表.学生代码进行分组。
5 . 使用 yes 命令。
平均输出分数大于8 0分。
6 . 那么表中就没有平均条目了。
所以使用as命令来附加。

如何快速学会sql

掌握这5 0条常用的SQL语句基本上就够了。
我们建议您在数据库中创建下表,并一一尝试所有这些示例,以充分理解它们。
准备数据表 学生(S#、Sname、Sage、Ssex) 学生表 课程(C#、Cname、T#) 课程表 SC(S#、C#、分数) 成绩表 教师(T#、Tname) 教师表 问题: 1 、查询“001 ”课程成绩高于“002 ”课程成绩的所有学生的学号。
selecta.S#from(selects#,scorefromSC whereC#='001 ')a,(selects#,scorefromSCwhereC#='002 ')bwherea.scoreb.scoreanda.s#=b.s#;2 .查询平均成绩大于6 0的学生的学号和平均成绩 selectS#,avg(score)fromscgroupbyS#havingavg(score)6 0;3 .查询学生所有学生的人数、姓名、选课数、总成绩。
selectStudent.S#,Student.Sname,count(SC.C#),sum(score)fromStudentleftOuterjoinSConStudent.S#=SC.S#groupbyStudent.S#,Sname4 ,查询姓氏“李”的教师人数。
selectc ount(distinct(Tname))fromTeacherwhereTnamelike'李%'; 5 、查询不上“叶平”老师班级的学生的学号和姓名。
selectStudent.S#,Student.SnamefromStudentwhereS#notin(selectdistinct(SC.S#)fromSC,Course,TeacherwhereSC.C#=Course.C#andTeacher.T#=Course.T#andTeacher.Tname='叶萍'); 6 、查询学习过“001 ”并且学习过课程号“002 ”的学生的学号和姓名。
selectStudent.S#,Student.SnamefromStudent,SCwhereStudent .S#=SC.S#andSC.C#='001 'andexists(Select*fromSCasSC_2 whereSC_2 .S#=SC.S#andSC_2 .C#='002 ');7 . “夜评”查询学完该老师所教所有课程的学生的学号和姓名。
selectS#,SnamefromStudentwhereS#in(selectS#fromSC,课程,TeacherwhereSC.C#=Course.C#andTeacher.T#=Course.T#andTeacher.Tname='Ye Ping'groupbyS#havingcount(SC.C#)=(selectcount(C#)fromCourse,TeacherwhereTeacher.T#=Course.T#andTname='叶萍')); 8 、查询“002 ”课程成绩低于“001 ”课程成绩的所有学生的学号和姓名。
SelectS#,Snamefrom(selectStudent.S#,Student.Sname,score,(selectscorefromSCSC_2 whereSC_2 .S#=Student.S#andSC_2 .C#='002 ')score2 fromStudent,SCwhereStudent.S#=SC.S#andC#='001 ')S_2 wherescore2 score;9 .课程成绩为6 0查询所有低于分数的学生的学号和姓名。
selectS#,SnamefromStudentwhereS#notin(selectStudent.S #fromStudent,SCwhereS.S#=SC.S#andscore6 0);1 0.查询未学习所有课程的学生的学号和姓名。
selectStudent.S#,Student.SnamefromStudent,SCwhereStudent.S#=SC.S#groupbyStudent.S#,Student.Snamehavi ngcount(C#)(selectcount(C#)fromCourse);1 1 .查询至少有一门与学号“1 001 ”学生相同课程的学生的学号和姓名。
selectS#,SnamefromStudent,SCwhereStudent.S#=SC.S#andC#inselectC#fromSCwhereS#='1 001 ';1 2 、查询至少修读过一门学号为“001 ”课程的其他学生的学号和姓名。
selectdistinctSC.S#,SnamefromStudent,SCwhereStudent.S#=SC.S#andC#in(selectC#fromSCwhereS#='001 '); 1 3 、将“SC”表中“叶平”所教班级的成绩改为该课程的平均成绩。
;updateSCsetscore=(selectavg(SC_2 .score)fromSCSC_2 whereSC_2 .C#=SC.C#)fromCourse,TeacherwhereCourse.C#=SC.C#andCourse.T#=Teacher.T#andTeacher.Tname='叶pin');1 4 .查询并显示“1 002 “有号学生”正在与另一个同学号的学生学习同一门课程和名称。
selectS#fromSCwhereC#in(selectC#fromSCwhereS#='1 002 ')groupbyS#havingcount(*)=(selectcount(*)fromSCwhereS#='1 002 ');删除SC表中正在学习Ping老师班级的记录。
ctSCfromcourse,TeacherwhereCourse.C#=SC.C#andCourse.T#=Teacher.T#andTname='叶平'; 1 6 . 向 SC 表中插入一些记录。
这些记录必须符合未选修 2 号和 2 号课程的学生的平均成绩,InsertSCselectS#,'002 ',(Sele)。
ctavg(分数)fromSCwhereC#='002 ')fromStudentwhereS#notin(SelectS#fromSCwhereC#='002 '); 1 7 、按照平均分降序显示所有学生“数据库”、“企业管理”、“英语”课程的成绩。
按以下格式显示:学号、数据库、工商管理、英语、有效课程号、有效平均值点 SELECTS#as 学号,(SELECTscoreFROMSCWHERESC.S#=t.S#ANDC#='004 ')AS 数据库,(SELECTscoreFROMSCWHERESC.S #=t.S#ANDC#='001 ')AS 工商管理,(SELECTscoreFROMSCWHERESC.S#=t.S#ANDC#='006 ')ASEnglish,COUNT(*)AS有效课程数,AVG (t.score) AS 平均分 FROMSCAStGROUPBYS#ORDERBYavg (t.score) 1 8 、查询各科目的最高分和最低分:显示格式如下:课程 ID、最高分、最低分 SELECT TL.C#As 课程 ID、L.scoreAS 最高分、R.scoreAS 最低分 FROMSCL、 SCASRWHEREL.C#=R.C#andL.score=(SELECTMAX(IL.score )FROMSCASIL,StudentASIMWHEREL.C#=IL.C#andIM.S#=IL.S#GROUPBYIL.C#)ANDR.Score=(SELECTMIN(IR.score e)FROMSCASIRWHERER.C#=IR.C#GROUPBYIR.C#);2 1 .查询平均值不同老师教授的不同课程的分数从最高到最低。
SELECTmax(Z.T#)AS 教师 ID,MAX(Z.T 姓名)AS 教师姓名, C.C#AS 课程 ID, MAX (C.Cname) AS 课程名称, AVG (分数) 显示 AS 平均分数 FROMSCAST, CourseASC, TeacherASZwhereT .C#=C.C#andC.T#=Z.T#GROUPBYC.C#ORDERBYAVG(Score)DESC2 2 查询以下学生的成绩单在以下课程中排名第 3 至第 6 :商业管理 (001 )、Marx (002 ) )、UML (003 )、数据库 (004 ) [学生 ID]、[学生姓名]、商业管理、Marx、UML、数据库、平均成绩 SELECTDISTINCTtop3 SC.S#As 学生编号、Student.Sn ameAS 学生姓名、T1 .scoreAS 商业管理、T2 .scoreAS Marx、 T3 .scoreASUML、T4 .scoreAS 数据库,总分为 ISNULL(T1 .score,0)+ISNULL(T 2 .score,0)+ISNULL(T3 .score,0)+ISNULL(T4 .score,0) FROMStudent,SCLEFTJOINSCAST1 ONSC.S#=T1 .S#A NDT1 .C#='001 'LEFTJOINSCAST2 ONSC.S#=T2 .S#ANDT2 .C#='002 'LEFTJOINSCAST3 ONSC.S#=T3 .S#ANDT3 .C#='003 'LEFTJOINSCAST4 ONSC.S#=T4 .S#ANDT4 .C#='004 'WHEREstudent.S#=SC.S#andISNULL(T1 .score,0)+ISNULL(T2 .score,0)+ISNULL(T3 .score,0)+ISNULL(T4 .score,0)NOTIN(SELECTDISTINCTTOP1 5 WITHTIESISNULL(T1 .scor) e,0)+ISNULL(T2 .score,0)+ISNULL(T3 .score,0)+ISNULL(T4 .score,0)FROMscLEFTJOINScAST1 ONsc.S#=T1 .S# ANDT1 .C#='k1 'LEFTJOINscAST2 ONsc.S#=T2 .S#ANDT2 .C#='k2 'LEFTJOINscAST3 ONsc.S#=T3 .S#ANDT3 .C#='k3 'L EFTJOINscAST4 ONsc.S#=T4 .S#ANDT4 .C#='k4 'ORDERBYISNULL(T1 .score,0)+ISNULL(T2 .score,0)+ISNULL(T3 .score,0)+ISNULL(T4 .score,0)DESC); 2 3 、统计输出各科目成绩,输出各成绩范围内人数:课程ID、课程名称、[1 00-8 5 ]、[8 5 -7 0]、[7 0-6 0]、[6 0]SEL ECTSC.C#as course ID,Cnameas course名称,SUM(CASEWHENscoreBETWEEN8 5 AND1 00THEN1 ELSE0END)AS[1 00-8 5 ],SUM(CASEWHENscoreBETWEEN7 0AND8 5 THEN1 ELSE0END)AS[8 5 -7 0],SUM(CASEWHENscoreBETWEEN6 0AND7 0THEN1 ELSE0END)AS[7 0-6 0],SUM(CASEWHENscore6 0THEN1 ELSE0END)AS[6 0-]FROMSC,CoursewhereSC.C#=Course.C#GROUPBYSC.C#,Cname; 2 4 、查询学生平均成绩及排名。
SELECT1 +(SELECTCOUNT(个人平均分)FROM(SELECTS#,AVG(score)AS平均分FROMSCGROUP BYS#)AST1 WHERE平均分T2 .平均分)作为排名,S#为学号,平均分FROM(SELECTS#,AVG(score)平均分FROMSCGROUPBYS#)AST2 OR德比平均分描述。
2 5 、以SELECTt1 .S#为学生ID,t1 .C#为课程ID,分数FROMSCt1 WHEREs coreIN(SELECTTOP3 scoreFROMSCWHEREt1 .C#=C#ORDERBYscoreDESC)ORDERBYt1 .C#;查询各科成绩前三名的记录(不考虑平分)2 6 .查询每门课程选拔的学生人数。
selectc#,count(S#)fromscgroupbyC#;2 7 .查询所有只修读一门课程的学生的学号和姓名。
selectSC.S#,Student.Sname,count(C#)AS 所选课程数omSC,StudentwhereSC.S#=Student.S#groupbySC.S#,Student.Snamehavingcount(C#)=1 ;2 8 查询男孩和女孩的数量。
selectcount(Ssex) 作为学生组 bySsexhavingSsex='male' 中的男孩数量;Selectcount(Ssex) 作为学生组中女孩的数量 bySsexhavingSsex='girl'; 2 9 .查询姓“张”的学生列表。
SELECTSnameFROMStudentWHERESnamelike'Zhang%'; 3 0、查询同名同性学生列表,统计同名学生人数。
selectSname,count(*)fromStudentgroupbySnamehavingcount(*)1 ;;3 1 . 1 9 8 1 年出生的学生列表(注:Student表中Sage列的类型为datetime)selectSname,CONVERT(char(1 1 ),DATEPART(year,Sage))asagefromstudentwhereCONVERT(char(1 1 ),DATEPART(year,Sage))='1 9 8 1 '; 3 2 、查询每门课程的平均成绩。
结果按平均分升序排列。
如果平均分相同,则按照课程编号降序排列。
选择C#,Avg(score)fromSCgroupbyC#orderbyAvg(score),C#DESC;3 3 .查询平均分大于8 5 的所有学生的学号、姓名、平均分selectSname,SC.S#,avg(score)fromStudent,SCwhereStudent.S#=SC.S#groupbySC.S#,Snamehavingavg(score)8 5 ;3 4 .查询课程名称为“database”且分数小于6 0的学生姓名和成绩。
SelectSname,isnull(score,0)fromStudent,SC,CoursewhereSC.S#=Student.S#andSC.C#=Course.C#andCourse.Cname='database'andscore6 0;3 5 ,查询所有学生的选课状态。
3 6 、查询分数大于7 0分的课程名称、课程名称、成绩。
3 7 、查询不及格课程,并按课程编号从高到低排序。
3 8 、查询课号为003 且课程成绩大于8 0的学生。
学号和姓名。
selectSC.S#,Student.SnamefromSC,StudentwhereSC.S#=Student.S#andScore8 0andC#='003 '; 3 9 . 查找选择该课程的学生人数 selectcount(*)fromsc。
4 0、查询选择“叶平”所教课程的学生中成绩最高的学生姓名和成绩。
select tStudent.Sname,scorefromStudent,SC,CourseC,TeacherwhereStudent.S#=SC.S#andSC.C#=C.C#andC.T#=Teacher.T#andTeacher.Tname='叶平'andSC.score=(selectmax(score)fromSCwher eC#=C.C#);4 1 .每门课程及对应选课号查询selectcount(*)fromscgroupbyC#;4 2 .查询不同课程中相同成绩学生的学号、课程号、学生成绩。
选择distinctA.S#,B.scorefromSCA,SCB,其中A.Score=B.ScoreandA.C#B.C#;4 3 .查询各科目得分最高的Top 2 SELECTt1 .S#为学生ID,t1 .C#为课程ID,分数成绩FROMSCt1 WHEREscoreIN (SELECTTOP2 scoreFROMSCWHEREt1 .C#=C#ORDERBYscoreDESC)ORDERBYt1 .C#; 4 4 、统计每门课程的学生人数(1 0人)(仅统计1 人以上的课程)。
需要输出学科号和所选学生人数。
查询结果按照人数降序排列。
如果参加人数相同,则查询结果按照课程编号升序排列。
选择 C# 作为课程编号,并选择 count(*) 作为来自 scgroupbyC#orderbycount(*)desc,c#4 5 的学生人数。
获取至少修读过两门课程的学生的学生证。
选择S#fromscgroupbys#havingcount(*)=2 4 6 查询所有学生正在选修的课程的课程号和课程名称。
selectC#,CnamefromCoursewhereC#in(selectc#fromscgroupbyc#) 4 7 、查询没有学过‘叶平’教授的课程的学生姓名。
selectSnamefromStudentwhereS#notin(selectS#fromCourse,Teach r,SCwhereCourse.T#=Teacher.T#andSC.C#=course.C#andTname='叶萍'); 4 8 、查询三门及以上课程不及格的学生人数和平均分。
selectS#,avg(isnull(score,0))fromSCwhereS#in(selectS#fromSCwherescore6 0groupbyS#havingcount(*)2 )groupbyS#; 4 9 、获取“004 ”课程成绩低于6 0分的学生,按照成绩降序排列。
5 0、删除“002 ”学生的“001 ”课程成绩。
deletefromScwhereS#='001 'andC#='001 ';