书写前,先将文件名改为自己的名字
1、现在有一张全校学生信息表stu_table,这张表存储了每位学生的id、name(姓名)、class(班级)、sex(性别)以及一些其他信息,现在我们想知道每个班有多少学生,该怎么实现呢?
id | name | class | sex |
---|---|---|---|
4 | 张文华 | 二班 | 男 |
3 | 李思雨 | 一班 | 女 |
1 | 王小凤 | 一班 | 女 |
7 | 李智瑞 | 三班 | 男 |
6 | 徐文杰 | 二班 | 男 |
8 | 徐雨秋 | 三班 | 男 |
5 | 张青云 | 二班 | 女 |
9 | 孙皓然 | 三班 | 男 |
10 | 李春山 | 三班 | 男 |
2 | 刘诗迪 | 一班 | 女 |
最后运行结果如下:
class | stu_num |
---|---|
二班 | 3 |
一班 | 3 |
三班 | 4 |
写出合理的SQL语句(包含创建表与数据的过程):
create database zhang; create table stu_table(id int ,name char(6),class char(4),sex char (4)) default charset=utf8; insert into stu_table values(4,'张文华','二班','男'); insert into stu_table values(3,'李思雨','一班','女'); insert into stu_table values(1,'王小凤','一班','女'); insert into stu_table values(7,'李智瑞','三班','男'); insert into stu_table values(6,'徐文杰','二班','男'); insert into stu_table values(8,'徐雨秋','三班','男'); insert into stu_table values(5,'张青云','二班','女'); insert into stu_table values(9,'孙皓然','三班','男'); insert into stu_table values(10,'李春山','三班','男'); insert into stu_table values(2,'刘诗迪','一班','女'); ............... select class,count(name) as 'stu_num' from stu_table group by class order by 'stu_num';
2、还是前面的全校学生信息表stu_table,现在我们要获取id从小到大排序以后第3-5位的同学的信息。
最后运行结果如下:
id | name | class | sex |
---|---|---|---|
3 | 李思雨 | 一班 | 女 |
4 | 张文华 | 二班 | 男 |
5 | 张青云 | 二班 | 女 |
写出合理的SQL语句:
select id,name,sex,class from stu_table order by id limit 2,3;
3、现在有一张学生成绩表score_table,这张表存储了每位学生的id、name(姓名)、class(班级)、score(成绩),现在我们想要把挂科(成绩小于60)的同学信息筛选出来。
score_table表如下所示:
id | name | class | score |
---|---|---|---|
1 | 王小凤 | 一班 | 88 |
2 | 刘诗迪 | 一班 | 70 |
3 | 李思雨 | 一班 | 92 |
4 | 张文华 | 二班 | 55 |
5 | 张青云 | 二班 | 77 |
6 | 徐文杰 | 二班 | 77 |
7 | 李智瑞 | 三班 | 56 |
8 | 徐雨秋 | 三班 | 91 |
9 | 孙皓然 | 三班 | 93 |
10 | 李春山 | 三班 | 57 |
最后运行结果如下:
id | name | class | score |
---|---|---|---|
4 | 张文华 | 二班 | 55 |
7 | 李智瑞 | 三班 | 56 |
10 | 李春山 | 三班 | 57 |
写出合理的SQL语句(包含创建表与数据的过程):
create database zhang; create table stu_table(id int ,name char(6),class char(4),score int); default charset=utf8; insert into score_table values(1,'王小凤','一班',88); insert into score_table values(2,'刘诗迪','一班',70); insert into score_table values(3,'李思雨','一班',92); insert into score_table values(4,'张文华','二班',55); insert into score_table values(5,'张青云','二班',77); insert into score_table values(6,'徐文杰','二班',77); insert into score_table values(7,'李智瑞',三班',56); insert into score_table values(8,'徐雨秋','三班',91); insert into score_table values(9,'孙皓然','三班',93); insert into score_table values(10,'李春山','三班',57); ............... select * from score_table where score < 60;
4、现在有一个月份销售额记录表sale_table,这个表记录了每年每月的销售额,现在我们想看下今年(2019年),月销售额最高涨幅是多少?
sale_table表如下所示:
year_num | month_num | sales |
---|---|---|
2019 | 1 | 2854 |
2019 | 2 | 4772 |
2019 | 3 | 3542 |
2019 | 4 | 1336 |
2019 | 5 | 3544 |
2018 | 1 | 2293 |
2018 | 2 | 2559 |
2018 | 3 | 2597 |
2018 | 4 | 2363 |
最后运行结果如下:
max_sales | min_sales | cha | growth |
---|---|---|---|
4772 | 1336 | 3436 | 2.5719 |
写出合理的SQL语句(包含创建表与数据的过程):
create database zhang; create table sale_table(year_num year,month_num int,sales int); insert into sale_table values(19,1,2854); insert into sale_table values(19,2,4772); insert into sale_table values(19,3,3542); insert into sale_table values(19,4,1336); insert into sale_table values(19,5,3544); insert into sale_table values(18,1,2293); insert into sale_table values(18,2,2559); insert into sale_table values(18,3,2597); insert into sale_table values(18,4,2363); ........... select max(sales) as 'max_sales',min(sales) as 'min_sales',max(sales)-min(sales) as 'cha',(max(sales)-min(sales))/min(sales) as 'growth' from sale_table;
5、现在有一张学生信息表table1,这张表记录了id、name等一些其他信息;还有另外一张获奖名单表table2,这张表记录了获奖学生的id和name。现在我们想要通过table1获取获奖学生的更多信息。
table1表如下所示:
id | name |
---|---|
1 | 王小凤 |
2 | 刘诗迪 |
3 | 李思雨 |
4 | 张文华 |
5 | 张青云 |
6 | 徐文杰 |
7 | 李智瑞 |
8 | 徐雨秋 |
9 | 孙皓然 |
table2表如下所示:
id | name |
---|---|
1 | 王小凤 |
2 | 刘诗迪 |
3 | 李思雨 |
7 | 李智瑞 |
8 | 徐雨秋 |
9 | 孙皓然 |
最后运行结果如下:
id | name |
---|---|
1 | 王小凤 |
2 | 刘诗迪 |
3 | 李思雨 |
7 | 李智瑞 |
8 | 徐雨秋 |
9 | 孙皓然 |
写出合理的SQL语句(包含创建表与数据的过程):
create table table1(id int,name char(20)) default charset=utf8; create table table2(id int,name char(20)) default charset=utf8; insert into table1 values(1,'王小凤'); insert into table1 values(2,'刘诗迪'); insert into table1 values(3,'李思雨'); insert into table1 values(4,'张文华'); insert into table1 values(5,'张青云'); insert into table1 values(6,'徐文杰'); insert into table1 values(7,'李智瑞'); insert into table1 values(8,'徐雨秋'); insert into table1 values(9,'孙皓然'); insert into table2 values(1,'王小凤'); insert into table2 values(2,'刘诗迪'); insert into table2 values(3,'李思雨'); insert into table2 values(7,'李智瑞'); insert into table2 values(8,'徐雨秋'); insert into table2 values(9,'孙皓然'); select table2.id,table2.name from table1 right join table2 on table1.name=table2.name;
6、现在有一张学生科目表course_table,这张表存储了每一位学生的id、name(姓名)、grade(年级)、course(选修课程)以及一些其他信息,现在我们想知道哪门课被学生选的人数最多?
course_table表如下所示:
id | name | grade | course |
---|---|---|---|
1 | 王小凤 | 一年级 | 心理学 |
2 | 刘诗迪 | 二年级 | 心理学 |
3 | 李思雨 | 三年级 | 社会学 |
4 | 张文华 | 一年级 | 心理学 |
5 | 张青云 | 二年级 | 心理学 |
6 | 徐文杰 | 三年级 | 计算机 |
7 | 李智瑞 | 一年级 | 心理学 |
8 | 徐雨秋 | 二年级 | 计算机 |
9 | 孙皓然 | 三年级 | 社会学 |
10 | 李春山 | 一年级 | 社会学 |
最后结果如下:
course | stu_num |
---|---|
心理学 | 5 |
写出合理的SQL语句(包含创建表与数据的过程):
create table course_table(id int,name char(6),grade char(4),course char (6)) default charset=utf8; insert into course_table values(1,'王小凤','一年级','心理学'); insert into course_table values(2,'刘诗迪','二年级','心理学'); insert into course_table values(3,'李思雨','三年级','社会学'); insert into course_table values(4,'张文华','一年级','心理学'); insert into course_table values(5,'张青云','二年级','心理学'); insert into course_table values(6,'徐文杰','三年级','计算机'); insert into course_table values(7,'李智瑞','一年级','心理学'); insert into course_table values(8,'徐雨秋','二年级','计算机'); insert into course_table values(9,'孙皓然','三年级','社会学'); insert into course_table values(10,'李春山','一年级','社会学'); ............... select course,count(course) as 'stu_num' from course_table group by course limit 0,1;