33道数据库题目

article/2025/10/9 2:55:42

33道数据库题目

      • 准备三张表
      • 题目

准备三张表

  1. emp–员工表
    p1
  2. dept–部门表
    p2
  3. salgrade–工资等级表
    p3

题目

  1. 取得每个部门最高薪水的人员名称
    (方法1)
select ename, sal, deptno from emp where sal in (select max(sal) from emp group by deptno);

p4
(方法2)

select e.ename, e.sal, e.deptno from emp e join (select deptno, max(sal) max_sal from emp group by deptno) t on e.deptno = t.deptno where e.sal = t.max_sal;

p5

  1. 哪些人的薪水在部门的平均薪水之上
select e.ename, e.sal, e.deptno from emp e join (select avg(sal) avg_sal, deptno from emp group by deptno) t on e.deptno = t.deptno where e.sal > t.avg_sal;

p6

  1. 取得部门中(所有人的)平均的薪水等级
select e.deptno, avg(grade) from emp e join salgrade s on e.sal between s.losal and hisal group by deptno;

p7

  1. 不准用组函数(Max),取得最高薪水(给出两种解决方案)
    (方法1- - -order by & limit)
select sal from emp order by sal desc limit 1;

p8
(方法2- - -自连接)

select sal from emp where sal not in (select distinct a.sal from emp a join emp b on a.sal < b.sal);

p9

  1. 取得平均薪水最高的部门的部门编号(至少给出两种解决方案)
    (方法1- - -having)
select deptno, avg(sal) avg_sal from emp group by deptno having avg_sal = (select max(t.avgsal) from (select avg(sal) avgsal from emp group by deptno) t);

p10
(方法2- - -order by & limit)

select deptno, avg(sal) avg_sal from emp group by deptno order by avg_sal desc limit 1;

p11

  1. 取得平均薪水最高的部门的部门名称
select a.deptno, d.dname, a.avg_sal from (select deptno, avg(sal) avg_sal from emp group by deptno having avg_sal = (select max(t.avgsal) from (select avg(sal) avgsal from emp group by deptno) t)) a join dept d on a.deptno=d.deptno;

p12
或者

select d.dname, avg(e.sal) avg_sal from emp e join dept d on e.deptno=d.deptno group by d.dname having avg_sal = (select max(t.avgsal) from (select avg(sal) avgsal from emp group by deptno) t);

p13

  1. 求平均薪水的等级最低的部门的部门名称
select t.*, s.grade from (select d.dname, avg(sal) avg_sal from emp e join dept d on e.deptno = d.deptno group by d.dname) t join salgrade s on t.avg_sal between s.losal and s.hisal where s.grade = (select grade from salgrade where (select avg(sal) avgsal from emp group by deptno order by avgsal asc limit 1) between losal and hisal);

p14
(方法2- - -忽略等级,平均工资最低等级也就最低)

select dname, avg_sal from (select d.dname, avg(sal) avg_sal from emp e join dept d on e.deptno = d.deptno group by d.dname) t where t.avg_sal = (select min(avgsal) from (select avg(sal) avgsal from emp group by deptno) a);

p15
(方法3- - -忽略等级,平均工资最低等级也就最低)

select dname, avg_sal from (select d.dname, avg(sal) avg_sal from emp e join dept d on e.deptno = d.deptno group by d.dname) t where t.avg_sal = (select avg(sal) avgsal from emp group by deptno order by avgsal asc limit 1);

p16

  1. 取得比普通员工(员工代码没有在 mgr 字段上出现的)的最高薪水还要高的
    领导人姓名
select ename, sal from emp where sal > (select max(sal) from emp where empno not in (select distinct mgr from emp where mgr is not null));

p17

  1. 取得薪水最高的前五名员工
select ename, sal from emp order by sal desc limit 5;

p18

  1. 取得薪水最高的第六到第十名员工
select ename, sal from emp order by sal desc limit 5,5;

p19

  1. 取得最后入职的 5 名员工
select ename, hiredate from emp order by hiredate desc limit 5;

p20

  1. 取得每个薪水等级有多少员工
select s.grade, count(empno) from emp e join salgrade s on e.sal between s.losal and s.hisal group by s.grade order by s.grade asc;

p21

  1. 列出所有员工及领导的姓名
select a.ename, ifnull(b.ename,'没有') mgr from emp a left join emp b on a.mgr = b.empno;

p22

  1. 列出受雇日期早于其直接上级的所有员工的编号,姓名,部门名称
select a.empno, a.ename, a.hiredate, b.ename, b.hiredate, d.dname from emp a join emp b on a.mgr = b.empno join dept d on a.deptno = d.deptno where a.hiredate < b.hiredate;

p23

  1. 列出部门名称和这些部门的员工信息,同时列出那些没有员工的部门
select d.dname, e.* from dept d left join emp e on d.deptno = e.deptno;

p24

  1. 列出至少有 5 个员工的所有部门
select d.dname from emp e join dept d on e.deptno = d.deptno group by d.dname having count(e.empno) >= 5;

p25

  1. 列出薪金比"SMITH"多的所有员工信息
select * from emp where sal > (select sal from emp where ename = 'smith');

p26

  1. 列出所有"CLERK"(办事员)的姓名及其部门名称,部门的人数
select e.ename, d.dname, b.count_emp from emp e join dept d on e.deptno = d.deptno join (select deptno, count(empno) count_emp from emp group by deptno) b on e.deptno = b.deptno where e.job = 'clerk';

p27

  1. 列出最低薪金大于 1500 的各种工作及从事此工作的全部雇员人数
select job, count(*), min(sal) from emp group by job having min(sal) > 1500;

p28

  1. 列出在部门"SALES"<销售部>工作的员工的姓名,假定不知道销售部的部
    门编号
select ename from emp where deptno = (select deptno from dept where dname='sales');

p29

  1. 列出薪金高于公司平均薪金的所有员工,所在部门,上级领导,雇员的工资等级
select e.ename, d.dname, a.ename, s.grade from emp e join dept d on e.deptno = d.deptno left join emp a on e.mgr = a.empno join salgrade s on e.sal between s.losal and s.hisal where e.sal > (select avg(sal) from emp);

p30

  1. 列出与"SCOTT"从事相同工作的所有员工及部门名称
select e.ename, e.job, d.dname from emp e join dept d on e.deptno = d.deptno where e.job = (select job from emp where ename = 'scott') and e.ename <> 'scott';

p31
23. 列出薪金等于部门 30 中员工的薪金的其他员工的姓名和薪金

select ename, sal from emp where sal in (select sal from emp where deptno = 30) and deptno <> 30;

p32

  1. 列出薪金高于在部门 30 工作的所有员工的薪金的员工姓名和薪金.部门名
select ename, sal, dname from emp e join dept d on e.deptno = d.deptno where sal > (select max(sal) from emp where deptno = 30);

p33

  1. 列出在每个部门工作的员工数量,平均工资和平均服务期限
select d.deptno, count(e.ename) ecount, ifnull(avg(e.sal), 0) as avg_sal, ifnull(avg(timestampdiff(YEAR, hiredate, now())), 0) as avgtime from emp e right join dept d on e.deptno = d.deptno group by d.deptno;

p34

  1. 列出所有员工的姓名、部门名称和工资
select e.ename, d.dname, e.sal from emp e join dept d on e.deptno = d.deptno;

p35

  1. 列出所有部门的详细信息和人数
select d.deptno, d.dname, d.loc, count(e.empno) from dept d left join emp e on d.deptno = e.deptno group by d.deptno,d.dname,d.loc;

p36

  1. 列出各种工作的最低工资及从事此工作的雇员姓名
select e.job, e.ename, e.sal from emp e join (select job, min(sal) min_sal from emp group by job) t on e.job = t.job and e.sal = t.min_sal;

p37

  1. 列出各个部门的 MANAGER(领导)的最低薪金
select deptno, min(sal) from emp where job = 'manager' group by deptno;

p38

  1. 列出所有员工的年工资,按年薪从低到高排序
select ename, (sal+ifnull(comm, 0)) * 12 as balance from emp order by balance asc;

p39

  1. 求出员工领导的薪水超过 3000 的员工名称与领导名称
select e.ename emp, a.ename leader from emp e join emp a on e.mgr = a.empno where a.sal > 3000;

p40

  1. 求出部门名称中,带’S’字符的部门员工的工资合计、部门人数
select d.dname, count(e.sal), count(e.empno) from dept d left join emp e on d.deptno = e.deptno where d.dname like '%s%' group by d.dname;

p41

  1. 给任职日期超过 30 年的员工加薪 10%
update emp set sal = sal * 1.1 where timestampdiff(YEAR, hiredate, now()) > 30;

p42


http://chatgpt.dhexx.cn/article/MKs9S0e7.shtml

相关文章

50道数据库SQL练习题(深入理解各关键字的作用)

目录 表结构创建表练习题1、查询“001”课程比“002”课程成绩高的所有学生的学号2、查询所有同学的学号、姓名、选课数、总成绩3、查询平均成绩大于60分的同学的 学号和平均成绩4、查询姓“葛”的老师的个数5、查询没学过“五木”老师课的同学的学号、姓名6、查询学过“101”并…

数据库复习题选择题+判断题+填空题(考试续命必备

数据库复习题选择题判断题填空题(考试续命必备 一些选择题 1、从计算机数据管理的角度看&#xff0c;信息就是数据&#xff0c;数据就是信息。&#xff08;B &#xff09; A、对 B、错 (描述事物的符号记录称为数据 数据库的数据项之间无联系&#xff0c;记录之间存在联系。…

【课后习题】高等数学第七版上第二章 导数与微分 第五节 函数的微分

习题2-5 1. 已知 y x 3 − x yx^3-x yx3−x, 计算在 x 2 x2 x2 处当 Δ x \Delta x Δx 分别等于 1 , 0.1 , 0.01 1,0.1,0.01 1,0.1,0.01 时的 Δ y \Delta y Δy 及 d y \mathrm{d} y dy. 2. 设函数 y f ( x ) yf(x) yf(x) 的图形如下, 试在图(a)、(b)、&#xff0…

高等数学同济七版课后习题答案

高等数学同济七版课后习题答案上册下册,习题全解指南。 一、《高等数学》(第七版)下册习题全解 第八章 向量代数与空间解析几何 下载地址: 链接:https://pan.baidu.com/s/185C8RB4Y9pYO84V4Rup1Wg 提取码:p0o8 习题8-1 向量及其线性运算 习题8-2 数量积 向量积 *混合积…

高等数学(第七版)同济大学 习题10-3 (后6题)个人解答

高等数学&#xff08;第七版&#xff09;同济大学 习题10-3&#xff08;后6题&#xff09; 函数作图软件&#xff1a;Mathematica 10. 利 用 球 面 坐 标 计 算 下 列 三 重 积 分 &#xff1a; \begin{aligned}&10. \ 利用球面坐标计算下列三重积分&#xff1a;&\end…

高等数学(第七版)同济大学 习题1-8 个人解答

高等数学&#xff08;第七版&#xff09;同济大学 习题1-8 函数作图软件&#xff1a;Mathematica 1. 设 y f ( x ) 的图形如图 1 − 39 所示&#xff0c;试指出 f ( x ) 的全部间断点&#xff0c;并对可去间断点补充或 修改函数值的定义&#xff0c;使它成为连续点。 \begin{…

浅谈一下前端单元测试

关于单元测试这个概念&#xff0c;我想很多前端的小伙伴都知道&#xff0c;但是却并不一定能描述清楚。由于我开始接触单元测试还是在四个月前&#xff0c;当时也只是做了一些纯函数的单元测试。所以在这里只能说浅谈一下前端单元测试。 什么是单元测试&#xff1f; 我理解的…

web前端测试要点

【说明】 JS压缩&#xff1a; 目的&#xff1a; 1、减少JS代码容量&#xff0c;增加下载速度和执行速度&#xff1b; 2、压缩后的JS代码不具备可识性&#xff0c;在一定程度上达到加密效果&#xff0c;防止被人轻易使用。 常规Javascript压缩的原理&#xff1a; 1、压缩多余的…

为什么必须执行前端测试?

对于网站的真实前端测试&#xff0c;必须在不同的设备和浏览器(具有多个版本)上检查功能和性能。在不同浏览器、浏览器版本和操作系统上评估网站的过程称为跨浏览器测试&#xff0c;它被认为是每个前端网站测试计划的重要组成部分&#xff0c;用于评估你能够通过无缝UI和UX取悦…

前端接口测试

背景 由于需求不断更改&#xff0c;项目前后端分离后&#xff0c;后端开发人员经常需要改字段加字段&#xff0c;也有可能删掉接口&#xff0c;这时候前端如果没有相对应的调整&#xff0c;就容易造成bug。为了解决这个问题&#xff0c;我们需要对接口进行测试。 测试被调用接…

前端测试方法

最近在学校的《系统分析与设计》一课的大作业上&#xff0c;由于我担任的是测试工程师的角色&#xff0c;因此小小的研究了一些前端和后端的测试到底要怎么做。本文着重于前端测试方法。 1. 什么是测试&#xff1f; 我把测试定义成&#xff1a;是一段检测你的应用代码&#xf…

前端测试都要测什么

单元测试&#xff0c;Unit Testing&#xff0c;简称 UT&#xff0c;是指对软件中的最小可测试单元进行检查和验证&#xff0c;这是最低级别的测试活动&#xff0c;前端开发中单元可以是一个 function 也可以是一个 class&#xff0c;也可以是一个组件。对他们的输出做断言检查&…

前端测试开发工具--mock 的使用

目录 1. 背景 2. Mock是什么 3. Mock能做什么 4. Mock实现方式 5. Mock市面上常见的解决方案 6. Python下unittest.mock使用 1. 背景 在实际产品开发过程中&#xff0c;某个服务或前端依赖一个服务接口&#xff0c;该接口可能依赖多个底层服务或模块&#xff0c;或第三方…

浅谈前端测试

浅谈前端测试 浅谈 TDD 和 BDD TDD Test Driven Development (测试驱动开发) 一种使用自动化单元测试来推动软件设计并强制依赖关系解耦的技术。使用这种做法的结果是一套全面的单元测试&#xff0c;可随时运行&#xff0c;以提供软件可以正常工作的反馈。大概的流程是先针对…

前端测试介绍

测试,作为软件工程的一项重要环节,用来保证项目的正确性,完整性,安全性和可靠性。 前端测试是前端工程化的重要环节,根据测试的粒度可以分为单元测试,功能测试(E2E测试),集成测试。 前端测试框架 单元测试 - Mocha - Jasmine - Jest 断言库 - chai - Jest - …

前端测试接口,POSTMAN一键调试

前端测试接口&#xff0c;POSTMAN一键调试 当我们在开发中&#xff0c;遇到接口有问题时&#xff0c;一般都会找后端battle一下&#xff0c;在这之前我们需要先确认问题&#xff0c;当我们浏览器不方便调试时&#xff0c;我们一般会借助postman&#xff0c;因为比较方便也比较…

【测试数据准备-绕过后端,前端测试】

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、 Charles 简单介绍二、本文使用场景三、Charles 通过修改后端返回值&#xff0c;在前端展示。1.工具安装和注册2.使用端点功能修改接口返参数 总结 前言 测…

前端测试一共有哪几种?

前言 哈喽&#xff0c;大家好&#xff0c;我是海怪。 最近有不少朋友找到我聊了聊测试相关的内容&#xff0c;发现他们对测试的分类有些迷茫。实际上测试一共就 3 种&#xff1a;E2E&#xff0c;集成&#xff0c;单测&#xff0c;其它的功能测试、UI 测试、界面测试只是它们中…

聊聊前端测试那点事儿

虽然如今前端测试这个事已经被大家所认可了&#xff0c;但我见过做前端测试的团队并不多&#xff0c;能把前端测试做好的团队&#xff0c;就更加凤毛麟角了。 这个现象背后的逻辑是&#xff1a;编写前端测试其实非常困难。 在编写测试代码时&#xff0c;我们有很多事情要考虑…

前端测试如何做?

前端测试大家天天做。但是你知道前端测试是怎么做的吗&#xff1f; 什么是前端测试? 前端测试是测试图形用户界面(GUI)、web应用程序或软件的功能和可用性的一种测试技术。前端测试的目标是测试整体功能&#xff0c;以确保web应用程序或软件的表示层在连续更新中没有缺陷。 …