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有如下记录
| id | name | num |
|---|---|---|
| 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;
本文提供了两个SQL查询案例:一是筛选所有科目成绩合格的学生信息;二是找出数学科目的最高分及对应的学生成绩详情。此外,还提供了一个复杂案例,即找出每种学科中成绩排名前两位的学生,并按成绩倒序排列。
5323

被折叠的 条评论
为什么被折叠?



