mysql练习题

练习题

查询选了课程的学生人数

select count(distinct 学号) as 学生人数 from score;

用一条SQL 语句 查询出每门课都大于80 分的学生姓名

select distinct name from table where name not in (select distinct name from table where fenshu<=80)
select name from table group by name having min(fenshu)>80

删除除了自动编号不同, 其他都相同的学生冗余信息

delete tablename where 自动编号 not in (select min(自动编号) from tablename group by 学号, 姓名, 课程编号, 课程名称, 分数)

一个叫 team 的表,里面只有一个字段name, 一共有4 条纪录,分别是a,b,c,d, 对应四个球对,现在四个球对进行比赛,用一条sql 语句显示所有可能的比赛组合.

select a.name, b.name from team a, team b where a.name < b.name

查询平均成绩大于60分学生的学号和平均成绩

学号分组,组内聚集平均分大于60
select 学号, avg(成绩) from score group by 学号 having avg(成绩)>60;

查询至少选修两门课程的学生学号

select 学号, count(课程号) as 选修课程数目 from score group by 学号 having count(课程号)>=2;

查询同名同姓学生名单并统计同名人数

select 姓名,count() as 人数
from student
group by 姓名
having count(
)>=2;

查询不及格的课程并按课程号从大到小排列

select 课程号 from score where 成绩<60 order by 课程号 desc;

查询两门及其以上不及格课程的同学的学号,姓名及其平均成绩

select b.姓名,avg(a.成绩),a.学号 from score as​ a inner join student as b ​​on a.学号 =b.学号
where a.成绩 <60 group by a.学号 having count(a.学号 ) >=2;

查询课程编号为“0001”的课程比“0002”的课程成绩高的所有学生的学号

select a.学号
​from
(select 学号 ,成绩 from score where 课程号=01) as a
inner join
(select 学号 ,成绩 from score where 课程号=02) as b
on a.学号 =b.学号
inner join student c on c.学号 =a.学号
where a.成绩 >b.成绩 ;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值