SQL查询小练习 - 001(咋个办呢 zgbn)

SQL查询小练习 - 001

今天群里有个人问了下面一个问题,我看很经典就写了一下。

表名:成绩表 (其他用户实验的记录大家可自行插入)

姓名课程分数
张三语文81
张三数学75
李四语文56
李四数学90
王五语文81
王五数学100
王五英语49



问题:
1. 给出成绩全部合格的学生信息,包含姓名、课程、分数(注:分数在60以上评为合格 请查询出合格的信息)。
2. 查询出数学的最高分的信息,包含姓名、课程、分数。

我自己写的答案,没有实际执行过,不过我个人认为应该不会出错。

select * 
 from t2 
where 姓名 not in (select distinct 姓名 
                    from t1 
                   where t1.分数 <= 60 );

select * 
  from tables t1 
 where t1.课程='数学' and t1.分数 = (select max(t2.分数) 
                                     from tables t2 
                                    where t2.课程='数学') ;

数据库表tab_b有如下记录

idnamenum
1‘数学’90
2‘数学’91
3‘数学’80
4‘数学’92
5‘物理’80
6‘物理’79
7‘物理’82
8‘物理’70



问题:
请将每种name中num前2名的记录找出来,并按num倒排序

select *
  from (select row_number() over(partition by name order by num desc) rn,
               a.*
          from test4 a)
 where rn <= 2;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值