数据库 CURD测试题【中等】
文章目录
- 1.换座位(交换相邻的id)
- 基本信息
- 要求
- 答案[case when]
- 2.分数排名(分组,排序)
- 基本信息
- 要求
- 答案
- 3.连续出现的数字(连接)
- 信息
- 要求
- 答案
- 4.第N高的薪水(函数)
- 信息
- 要求
- 答案
- 5.各个部门工资最高的员工(分组,连接)
- 信息
- 要求
- 答案
- 6.统计各专业人数
- 7.查询回答率最高的问题
- 8.至少有5名直接下属的经理
1.换座位(交换相邻的id)
基本信息
小美是一所中学的信息科技老师,她有一张 seat 座位表,平时用来储存学生名字和与他们相对应的座位 id。
其中纵列的 id 是连续递增的
小美想改变相邻俩学生的座位。
你能不能帮她写一个 SQL query 来输出小美想要的结果呢?
示例:
id | student |
---|---|
1 | Abbot |
2 | Doris |
3 | Emerson |
4 | Green |
5 | Jeames |
要求
假如数据输入的是上表,则输出结果如下:
id | student |
---|---|
1 | Doris |
2 | Abbot |
3 | Green |
4 | Emerson |
5 | Jeames |
- 注意:
如果学生人数是奇数,则不需要改变最后一个同学的座位。
答案[case when]
select(casewhen mod(id,2) = 1 and id != (select count(*) from seat) then id+1when mod(id,2)=0 then id-1else id end) as id , student
from seat
order by id asc
2.分数排名(分组,排序)
基本信息
编写一个 SQL 查询来实现分数排名。如果两个分数相同,则两个分数排名(Rank)相同。请注意,平分后的下一个名次应该是下一个连续的整数值。换句话说,名次之间不应该有“间隔”。
Id | Score |
---|---|
1 | 3.50 |
2 | 3.65 |
3 | 4.00 |
4 | 3.85 |
5 | 4.00 |
6 | 3.65 |
要求
例如,根据上述给定的 Scores 表,你的查询应该返回(按分数从高到低排列):
Score | Rank |
---|---|
4.00 | 1 |
4.00 | 1 |
3.85 | 2 |
3.65 | 3 |
3.65 | 3 |
3.50 | 4 |
答案
select s.Score, count(distinct t.Score) Rank
from Scores s join Scores t on s.Score <= t.Score
group by s.Id order by s.Score desc;
3.连续出现的数字(连接)
信息
编写一个 SQL 查询,查找所有至少连续出现三次的数字。
Id | Num |
---|---|
1 | 1 |
2 | 1 |
3 | 1 |
4 | 2 |
5 | 1 |
6 | 2 |
7 | 2 |
要求
例如,给定上面的 Logs 表, 1 是唯一连续出现至少三次的数字。
ConsecutiveNums |
---|
1 |
答案
这道题给了我们一个Logs表,让我们找Num列中连续出现相同数字三次的数字,那么由于需要找三次相同数字,所以我们需要建立三个表的实例,我们可以用l1分别和l2, l3内交,l1和l2的Id下一个位置比,l1和l3的下两个位置比,然后将Num都相同的数字返回即可:
解法一:
select distinct l1.Num as ConsecutiveNums
from Logs l1 join Logs l2 on l1.Id = l2.Id - 1 join Logs l3 on l1.Id = l3.Id - 2
where l1.Num = l2.Num and l2.Num = l3.Num;
我们在本地已经新建了表Logs.
4.第N高的薪水(函数)
信息
编写一个 SQL 查询,获取 Employee 表中第 n 高的薪水(Salary)。
Id | Salary |
---|---|
1 | 100 |
2 | 200 |
3 | 300 |
要求
例如上述 Employee 表,n = 2 时,应返回第二高的薪水 200。如果不存在第 n 高的薪水,那么查询应返回 null。
getNthHighestSalary(2) |
---|
200 |
答案
CREATE FUNCTION getNthHighestSalary(N INT) RETURNS INT
BEGINSET N = N - 1;RETURN (select distinct Salary from Employee group by Salaryorder by Salary desc limit 1 offset N);
END
5.各个部门工资最高的员工(分组,连接)
信息
Employee 表包含所有员工信息,每个员工有其对应的 Id, salary 和 department Id。
Id | Name | Salary | DepartmentId |
---|---|---|---|
1 | Joe | 70000 | 1 |
2 | Henry | 80000 | 2 |
3 | Sam | 60000 | 2 |
4 | Max | 90000 | 1 |
Department 表包含公司所有部门的信息。
Id | Name |
---|---|
1 | IT |
2 | Sales |
要求
编写一个 SQL 查询,找出每个部门工资最高的员工。例如,根据上述给定的表格,Max 在 IT 部门有最高工资,Henry 在 Sales 部门有最高工资。
Department | Employee | Salary |
---|---|---|
IT | Max | 90000 |
Sales | Henry | 80000 |
答案
select Department.Name as Department, Employee.Name as Employee,Salary
from Employee join Department on Employee.DepartmentId = Department.Id
where (Employee.salary, Employee.departmentId) in (select max(salary),departmentIdfrom employeegroup by departmentId );
6.统计各专业人数
7.查询回答率最高的问题
8.至少有5名直接下属的经理
SELECTName
FROMEmployee AS t1 JOIN(SELECTManagerIdFROMEmployeeGROUP BY ManagerIdHAVING COUNT(ManagerId) >= 5) AS t2ON t1.Id = t2.ManagerId);
数据库 CURD测试题【中等】相关推荐
- 数据库 CURD测试题【简单】
文章目录 1.组合两个表 基本信息 要求 答案 2.第二高的薪水 基本信息 要求 答案 3.查找重复的电子邮箱 基本信息 要求 答案 4.超过经理收入的员工 基本信息 要求 答案: 5.超过5名学生的 ...
- oracle数据库基础测试,ORACLE数据库基础测试题oracle数据库复习题.docx
<ORACLE数据库基础测试题oracle数据库复习题.docx>由会员分享,可在线阅读,更多相关<ORACLE数据库基础测试题oracle数据库复习题.docx(18页珍藏版)&g ...
- MyBatis-Plus实现数据库curd操作
文章目录 MyBatis-Plus 2.1.mp入门 MP主键策略 2.2.curd 2.3.自动填充 3.乐观锁 3.1.场景 MP实现乐观锁. 4.MP查询 4.1.多个ID批量查询 4.2.简单 ...
- php写接口curd,8.2 php接口类 实现数据库CURD小案例
php接口类 实现数据库CURD小案例 因为PHP只支持单继承,也就是说每个类只能继承一个父类.当声明的心累继承抽象类实现模板以后,它就不能再有其他的父类啦~ 为了解决这个问题,php引入了接口(注意 ...
- 【数据库】测试题二 关系代数
测试题二 关系代数 问题 1 得 2 分,满分 2 分 对关系R进行投影运算后,得到关系S,则( ). 所选答案: C. 关系R的元组数大于或等于关系S的元组数 答案: A. 关系R的 ...
- 二十九、Node.js连接Mysql和MongoDB数据库CURD操作
@Author:Runsen @Date:2020/6/10 人生最重要的不是所站的位置,而是内心所朝的方向.只要我在每篇博文中写得自己体会,修炼身心:在每天的不断重复学习中,耐住寂寞,练就真功,不畏 ...
- 如何使用 Mybatis 实现数据库 CURD 操作?
作者 | 阿文,责编 | 郭芮 头图 | CSDN 下载自东方IC 出品 | CSDN(ID:CSDNnews) MyBatis 是一款优秀的持久层框架,它支持自定义 SQL.存储过程以及高级映射.M ...
- 【数据库学习笔记】03 MySQL数据库CURD整理大全
2018.5.10 修 String 日期存入数据库的Date日期 1.MySQL语句方式 to_date(#{birthday},'YYYY/MM/DD') 2018.4.12 一:数据表操作 创建 ...
- 01-初步认识数据库管理系统测试题
关于数据库系统和数据库管理系统,下列说法正确的是__________. 从系统角度看数据库管理系统,其功能包括__________. 下列哪些功能不是数据库管理系统的功能__________. 关于数 ...
最新文章
- Rsync和Sersync(企业实时同步方案)
- NetBeans 时事通讯(刊号 # 125 - Nov 17, 2010)
- linux-basic(7)linux文件与目录管理
- host ntrip 千寻rtk_最新测量干货:南方银河1和银河1Plus RTK设备连接千寻cors账号的设置方法...
- python导入xlrd库_python中xlrd库如何实现文件读取?
- 将oracle优化器改为CBO,【DB.Oracle】Oracle 优化器 (RBO, CBO)
- 盘口的买一是卖股票还是买股票?
- JavaMail之发送邮件+接收邮件
- 2007年版EI核心版收录的中国期刊
- elasticsearch实践之代码结构设计
- matlab carcasonne,【My songs】原创英文歌词翻译
- 光计算机pdf,神威bull;太湖之光计算机系统.PDF
- XDOJ 233/237-字符串复制
- BDD ROBDD
- 洛谷 P2530 [SHOI2001]化工厂装箱员
- mysql连接数据了的dep_MySQL数据库基础
- 华为nova7se能云闪付吗_vivoS7和华为nova7se哪个好?自拍手机该如何抉择!
- Springboot 项目整合自定义日志文件
- [c#]喜马拉雅、蜻蜓、荔枝FM音频批量下载器V1.3 by Levme开发手记
- ssm智能社区服务的设计与实现毕业设计-附源码221512
热门文章
- java 常见bug_java常见bug
- python调用 matlab库_python调用matlab的搜索结果-阿里云开发者社区
- 2019编译ffepeg vs_如何在windows10下使用vs2017编译最新版本的FFmpeg和ffplay
- python界面编程和网口通信_Python—网络通信编程之tcp通信编程
- docker-compose观察实时日志_大数据项目实战之在线教育(03实时需求) - 十一vs十一...
- 进程调试--进程启动VS自动附加
- Restful对于URL的简化
- Regsvr32 dll OCX时报错,LoadLibrary(Dllname) 内存访问失败。
- cop2000计算机组成原理,COP2000计算机组成原理实验系统
- php bloginfo stylesheeturl,WordPress主题制作–bloginfo函数使用教程