MySQL查询之每日十题(结束篇)

1,023 阅读4分钟

MySQL查询(四)

这是我参与8月更文挑战的第25天,活动详情查看:8月更文挑战

MySQL查询之每日十题(四)

11.输出“高等数学”课程成绩前2名的学生的学号,姓名,系名

[注意:SQL表名请用小写]

学生数据库db_student包括三个数据表student(学生表)、course(课程表)和sc(选课表)。表结构如下:

1、student(学生表):

字段描述类型
sno学号char(7)
sname姓名char(10)
ssex性别char(2)
sage年龄SMALLINT
sdeptVARCHAR(20)

2、course(课程表)

字段描述类型
cno课程号char(10)
cname课程名VARCHAR(20)
ccredit学分SMALLINT
semster学期SMALLINT
period学时SMALLINT

3、sc(选课表)

字段描述类型
sno学号char(7)
cno课程号char(10)
grade成绩SMALLINT
SELECT s.sno,sname,sdept from student s,sc,course c WHERE s.sno=sc.sno and sc.cno=c.cno AND cname='高等数学'

ORDER BY grade DESC LIMIT 2;

12.查询2015年的借阅信息,输出读者卡号、书号及借书日期。

borrow(借书记录)表 :cno 借书卡号,bno 书号,rdate 还书日期

select cno,bno,rdate from borrow
where year(rdate)=2015;

13.SQL查询:查询人员信息:包括员工和客户

查询人员信息:包括员工和客户。(员工数据在前)

输出“id”、“name”、“type”,若为员工,type为“员工”,若为客户,type为“客户”。

员工表:employee

客户表:customer

查询输出形式如下:

SELECT employee_id AS id,employee_name AS 'name','员工'type
FROM employee
UNION 
SELECT customer_id AS id,customer_name AS 'name','客户'type
FROM customer;

14.查询书名包括"网络"关键词的图书信息

查询书名包括"网络"关键词的图书信息,输出书号、书名、作者。

表结构如下:

book(图书) 表:bno 书号,bname 书名,author 作者,price 单价,quantity 库存数

select bno,bname,author from book
where bname like '%网络%';

15.成绩表包括如下列(学号,课程代号,成绩,教师工号),查询查询选课的学生总数。

SELECT count(DISTINCT xh) from cj;

16.查询选修通过门数超过3门,且平均分在70以上的学生成绩信息

查询选修通过门数超过3门,且平均分在70以上的学生的学号,选修门数,平均成绩,并按平均成绩从高到低排序。

成绩表包括如下列(学号,课程代号,成绩,教师工号),表结构定义如下:

select xh,count(*),avg(cj) from cj   where cj>60  group by xh
having count(*)>3 and avg(cj)>70   order by 3 desc;

17.统计各门课程选修人数,要求输出课程代号,课程名,有成绩人数(grade不为NULL),最高分,最低分,平均分(取整round函数),按课程号排序。

[注意:SQL表名请用小写]

学生数据库db_student包括三个数据表student(学生表)、course(课程表)和sc(选课表)。

表结构如文章开头--代码如下:

select sc.cno,cname,count(grade),max(grade),min(grade),round(avg(grade))
from sc,course
where sc.cno=course.cno
group  by  cno
order by cno;

18.查询输出平均成绩在2-5名的学生,输出学号、姓名和平均成绩(取整),平均成绩降序。【不用考虑空值】

[注意:SQL表名请用小写]

学生数据库db_student包括三个数据表student(学生表)、course(课程表)和sc(选课表)。

表结构如文章开头--代码如下:

select sc.sno,sname,round(avg(grade))
from student,course,sc
where student.sno=sc.sno and course.cno=sc.cno
group by sc.sno
order by round(avg(grade)) desc
limit 1,4;

19.SQL查询:查询统计2016年订单客户总数

表结构如下:[注意表名请写order]

SELECT COUNT(DISTINCT customer_id) from `order` WHERE order_date LIKE '%2016%';

20.查询借阅信息,要求输出卡号,姓名,借阅书数,书名列表(按书名升序排列,用下划线_分隔),按照卡号升序排序。

表结构如下:

card(借书卡) 表:cno 卡号,name 姓名,class 班级

book(图书) 表:bno 书号,bname 书名,author 作者,price 单价,quantity 库存数

borrow(借书记录)表 :cno 借书卡号,bno 书号,rdate 还书日期

select card.cno,name,count(*),
GROUP_CONCAT(bname order by bname separator '_') 
from card,borrow,book
where card.cno=borrow.cno and borrow.bno=book.bno
group by card.cno
order by card.cno;

结束:

上述题目的解不是唯一,例题中的解是我所理解并运行成功的, 如果你看到这里或者正好对你有所帮助,希望能点个👍或者⭐感谢;

有错误的地方,欢迎在评论指出,作者看到会进行修改。