08.Hive必刷50题--36-40题

– 36、查询任何一门课程成绩在70分以上的学生姓名、课程名称和分数:

SELECT s.s_id,s.s_name,c.c_name,tmp2.s_score
FROM student s
JOIN 
(SELECT sc.*
FROM score sc 
LEFT JOIN (SELECT s_id FROM score WHERE s_score<70 GROUP BY s_id) tmp
ON sc.s_id=tmp.s_id
WHERE tmp.s_id is NULL
)tmp2
ON s.s_id=tmp2.s_id
JOIN course c ON tmp2.c_id=c.c_id

怎么查每个学生的每个课程成绩高于70?先查出有在70分以下的学生,之后连接score表,就能找出那些都在70分以上的

– 37、查询课程不及格的学生:

SELECT s.s_name,tmp.*
FROM student s
JOIN
(SELECT sc.s_id,c_name,s_score
FROM score sc JOIN course c ON sc.c_id=c.c_id
WHERE s_score<60
)tmp 
ON tmp.s_id=s.s_id

–38、查询课程编号为01且课程成绩在80分以上的学生的学号和姓名:

SELECT s.s_id,s.s_name,sc.s_score
FROM score sc 
JOIN student s ON sc.s_id=s.s_id
WHERE c_id='01' AND s_score>=80

– 39、求每门课程的学生人数:

SELECT c.c_id,c.c_name,COUNT(1)
FROM score sc 
JOIN course c ON sc.c_id=c.c_id
GROUP BY c.c_id,c.c_name

– 40、查询选修"张三"老师所授课程的学生中,成绩最高的学生信息及其成绩:

SELECT tmp.*
FROM
(SELECT s.*,s_score,RANK() over(ORDER BY s_score DESC) ranking
FROM teacher t
JOIN course c ON t.t_name='张三' AND t.t_id=c.t_id
JOIN score sc ON c.c_id=sc.c_id 
JOIN student s ON sc.s_id=s.s_id) tmp
WHERE tmp.ranking=1

后续部分参见:

00.Hive必刷50题--建表,插入数据

01.Hive必刷50题--1-5题

02.Hive必刷50题--6-10题

03.Hive必刷50题--11-15题

04.Hive必刷50题--16-20题

05.Hive必刷50题--21-25题

06.Hive必刷50题--26-30题

07.Hive必刷50题--31-35题

08.Hive必刷50题--36-40题

09.Hive必刷50题--41-45题

010.Hive必刷50题--46-50题

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值