sql训练题

1.查询平均成绩大于等于60分的同学的编号,Sid 以及学生姓名Sname 和平均成绩
第一步先查询出平均成绩大于60的全部信息

此题知识点,GROUP BY 语句用于结合合计函数,根据一个或多个列对结果集进行分组。group by后面不能接where,having代替了where
 Select * from sc group by sid  having avg(score)>60;

第二部添加student表中的name(用内连接,因为需要查询大于60分的同学的姓名,需要关联students表)

Select c.sid,s.sname,avg(score) from student s inner join sc c  on s.sid=c.sid group by c.sid having avg(score)>60;


2.查询sc表存在成绩的学生信息

--右连接 以=号右边的表为主表 显示右边表的全部信息(包括等值的,不等值的)

select s.*,c.* from student s right join sc c on s.sid=c.sid;

3.查询所有同学的学生信息 ,每个学生选课的总数,每个学生所有课程总成绩 没成绩的显示null;
第一步查询所有同学的信息(用左外连接因为,因为没显示成绩为空,要以student表为准)
select * from student;
第二歩 查询每个学生选课的总数
select count(c.CId) as coursecount from sc c GROUP BY c.SId;
第三部查询所有课程的总成绩
select sum(c.score)as sumscore from sc c GROUP BY c.Sid;
第四部:汇总
select s.sid,s.sname,count(c.CId) as coursecount,sum(c.score)as sumscore from student s left Outer join sc c on s.sid=c.sid  group by c.sid;

=================================================
4.查询姓李老师的信息
Select * From Teacher Where TName like '李%';

 查询名字中含有”李”字的学生信息 
select * from teacher where Tname like '%李%';

猜你喜欢

转载自blog.csdn.net/xiaoxiaode_shu/article/details/81979027
今日推荐