查询练习2

查询练习2

在这里插入图片描述
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210628183351124.jpg?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L20wXzU2OTQ1MTM4,size_16,color_FFFFFF,t_70#pic_center

1、查询学生表中男生,女生各有多少人

--查询男女各多少人,进行分组
select sex as '性别',COUNT(1) as '人数' from Student group by Sex;

2、查询 ‘1班’ 的学生信息

--先查询出来1班的id,再根据1班的id查学生信息
select * from Student s inner join Classes c on s.ClassId=c.Id 
and c.ClassName='1班';

select * from Student where ClassId=(select id from Classes 
where ClassName='1班');

3、查询‘1班’学生的人数

--两表连接查询,根据班级分组,筛选出一班的人数
select ClassName '班级',COUNT(1) '人数' from Student s 
inner join Classes c on s.ClassId=c.Id 
group by ClassName having ClassName='1班';

--先查询出来1班的id,查询1班的信息,再count()求人数
select count(1) from Student where 
ClassId=(select Id from Classes where ClassName='1班');

4、查询‘1班’中男生,女生各有多少人

select s.sex '性别',COUNT(1) as '人数' from Student s inner join 
Classes c on s.ClassId=c.Id and c.ClassName='1班' group by Sex;

select Sex,COUNT(1) '性别' from Student where ClassId=
(select Id from Classes where ClassName='1班') group by Sex;

5、查询每个班级各有多少人,展示出班级名称。

select c.ClassName as '班级',COUNT(1) as '人数' from Student s 
left join Classes c on s.ClassId=c.Id group by ClassName;

select (select ClassName from Classes where 
Classes.Id=Student.ClassId) '班级',COUNT(1) '人数' from Student 
group by ClassId

6、查询‘张华三’同学个人信息以及对应的班级名信息

select s.*,c.ClassName from Student s 
left join Classes c on s.ClassId=c.Id where s.RealName='张华三';

select *,(select ClassName from Classes 
where Classes.Id=Student.ClassId) from Student where RealName='张华三'

7、查询没有学生的班级信息

--外连接,没有学生的班级信息
select * from Student s right join Classes c
on s.ClassId=c.Id where s.Id is null;

select * from Classes c left join Student s
on c.Id=s.ClassId where s.Id is null;

8、查询学生中分数大于60分的学生信息以及对应的班级名称

select * from Student s inner join Classes c on s.ClassId=c.Id 
where s.Score>60;


select *,(select ClassName from Classes 
where Classes.Id=Student.ClassId) 班级名称 
from Student where Student.Score>60

9、查询学生人数大于2的班级名称,班级人数。

--第五题类似:查询每个班级各有多少人,展示出班级名称。
select ClassName,COUNT(ClassName)'班级人数' from Student s inner join 
Classes c on s.ClassId=c.Id group by ClassName 
having COUNT(ClassName)>2;

select count(Student.Id) 班级人数,
(select ClassName from Classes where classes.Id=Student.Classid) 班级名称 
from Student group by ClassId having count(Student.Id)>2;

10、查询每个班级的及格(>60)学生人数,展示出班级名称。

select Classes.ClassName,count(1) as '及格学生人数' from student inner join Classes 
on Classes.Id= Student.ClassId 
and Student.Score >=60 
group by Classes.ClassName;

select (select ClassName from Classes where Classes.Id = Student.ClassId) '班级名称',COUNT(1) '及格人数'
from Student where Score>60 group by ClassId  

查询练习1
查询练习3
查询练习4
查询练习5

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

1024节

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值