MySQL练习题

本文提供了一系列的MySQL练习题,包括利用SQL语句计算各种分数的题目,如查找每门课成绩都大于70分的学生、学生的平均分排名,以及通过Case类型对员工工资进行分类,输出员工信息并按工资类别划分。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

SQL语句层次

from table 从哪张表找
where condition 找满足什么条件的
group by xxx 按照谁进行分组
having xxx 分组之后满足什么条件
order by xxx 按照谁排序(必须是输出列)
select 选择要输出的列

:从cust_order表中找出2016年至今消费总额超过10000的用户及其消费总额,按用户id排序

select userid,sum(cust_amount) from cust_order where cust_date > '2016-01-01' group by userid having sum(cust_amount) > 10000 order by userid;

1.计算各种分数

建表:

create table grades(id int not null auto_increment,stu_id int,course_id int,grade int,constraint primary key(id));

插入数据:

insert into grades(stu_id,course_id,grade) values(1,1,100),(1,2,80),(1,3,75),(1,4,75),(2,1,70),(2,2,60),(2,3,75),(2,4,75),(3,1,90),(3,2,60),(3,3,85),(3,4,65);

题目1:查出每门课成绩都大于70分的学生。

select distinct stu_id from grades where stu_id not in (select stu_id from grades where grade < 70);

题目2:查出所以同学的平均分,并按成绩排名。

select stu_id,avg(grade) from grades group by stu_id order by 2 DESC;

题目3:查出平均分大于70分的学生及其平均分,按成绩排名。

select stu_id,avg(grade) from grades group by stu_id having avg(grade)>70 order by 2 DESC;

2.Case类型

建表:

create table salary(id int not null auto_increment,emp_id int,salary float(8,2),constraint primary key(id));

插入数据:

insert into salary(emp_id,salary) values (1,1000),(2,3000),(3,2000),(4,8000),(5,6000),(6,7000),(7,8000),(8,13000),(9,7000);

题目1:输出所有员工的信息,将员工分为三类 C类:工资小于5000; B类:工资 5000-10000;A类:工资大于10000

select emp_id,(case when salary < 5000 then 'C' when salary between 5000 and 10000 then 'B' when salary > 10000 then 'A' else 'NULL' end) as Type from salary; 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值