练习题3——学生相关信息查询

Sql脚本文件:
链接:https://pan.baidu.com/s/1C5dF6Mg9vWDckxS-DXuptw 
提取码:tp9e

又是做练习的一天。因为是对学生的信息进行的操作 在以后的代码编写中还是很实用的 所以尽可能的写的正确一点 。当然是和老师的答案进行了比对

题目:

一、查询每个专业的学生人数
二、查询参加考试的学生中,每个学生的平均分、最高分
三、查询姓张的每个学生的最低分大于60的学号、姓名
四、查询专业生日在“1988-1-1”后的学生姓名、专业名称
五、查询每个专业的男生人数和女生人数分别是多少
六、查询专业和张翠山一样的学生的最低分
七、查询大于60分的学生的姓名、密码、专业名
八、按邮箱位数分组,查询每组的学生个数
九、查询学生名、专业名、分数
十、查询哪个专业没有学生,分别用左连接和右连接实现
十一、查询没有成绩的学生人数

#一、查询每个专业的学生人数
SELECT majorid ,COUNT(*)
FROM student
GROUP BY majorid

#二、查询参加考试的学生中,每个学生的平均分、最高分
SELECT AVG(score),MAX(score),studentno
FROM result
GROUP BY studentno

#三、查询姓张的每个学生的最低分大于60的学号、姓名
SELECT s.studentno , studentname
FROM student s 
JOIN result r
ON s.studentno = r.studentno
WHERE s.studentname LIKE "张%"
GROUP BY s.studentno
HAVING MIN(score)>60 

#四、查询生日在“1988-1-1”后的学生姓名、专业名称
SELECT	studentname , majorname
FROM student s
JOIN major m
ON s.majorid = m.majorid
WHERE DATEDIFF(borndate,"1988-1-1") >0

#五、查询每个专业的男生人数和女生人数分别是多少
SELECT majorid,
(SELECT COUNT(*) FROM student WHERE sex="男" AND majorid = s.majorid ),
(SELECT COUNT(*) FROM student WHERE sex="女" AND majorid = s.majorid )FROM student s
GROUP BY majorid

#六、查询专业和张翠山一样的学生的最低分
#查询张翠山的专业号
SELECT majorid
FROM student
WHERE studentname = "张翠山"
#查询专业一样的学生的最低分
SELECT majorid,MIN(score)
FROM result r
JOIN student s
ON r.studentno = s.studentno
WHERE majorid = (
	SELECT majorid
	FROM student
	WHERE studentname = "张翠山")

#七、查询大于60分的学生的姓名、密码、专业名
做法一:
#查询大于60分的学生编号
SELECT r.studentno
FROM result r
WHERE r.score>60
#查询学生编号相等的姓名、密码、专业名
SELECT s.studentname , s.loginpwd , m.majorname  ,s.studentno
FROM student s
JOIN major m
ON s.majorid = m.majorid 
WHERE s.studentno IN (SELECT r.studentno FROM result r WHERE r.score>60)

#做法二:
SELECT s.studentname , s.loginpwd , m.majorname  
FROM student s 
JOIN major m ON s.majorid = m.majorid 
JOIN result r ON s.studentno = r.studentno
WHERE r.score>60

#八、按邮箱位数分组,查询每组的学生个数
SELECT LENGTH(email),COUNT(*) 学生个数
FROM student 
WHERE email IS NOT NULL
GROUP BY LENGTH(email) 

#九、查询学生名、专业名、分数
SELECT s.studentname , m.majorname , r.score
FROM  student s 
JOIN  major m ON s.majorid = s.majorid
LEFT JOIN  result r ON s.studentno = r.studentno

#十、查询哪个专业没有学生,分别用左连接和右连接实现
#左连接
SELECT m.majorid , m.majorname , s.studentno
FROM  major m
LEFT JOIN student s ON m.majorid = s.majorid
WHERE s.studentno IS NULL
#右连接
SELECT m.majorid , m.majorname , s.studentno
FROM student s
RIGHT JOIN  major m ON m.majorid = s.majorid
WHERE s.studentno IS NULL

#十一、查询没有成绩的学生人数
SELECT COUNT(*)
FROM student s
JOIN result r
ON s.studentno = r.studentno
WHERE r.score IS NULL

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值