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

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
sdept VARCHAR(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;
复制代码

结束:

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

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