iis服务器助手广告广告
返回顶部
首页 > 资讯 > 数据库 >【MySQL】试题 -
  • 699
分享到

【MySQL】试题 -

【MySQL】试题- 2021-10-01 10:10:23 699人浏览 绘本
摘要

1.取得每个部门最高薪水的人员名称: 先取出每个部门的最高薪水,再作为临时表与(对应最高薪水的人员名称表)连接...... 前言:以下试题中涉及的 table 均来自博主前面发的随笔“【Mys

【MySQL】试题 -

1.取得每个部门最高薪水的人员名称: 先取出每个部门的最高薪水,再作为临时表与(对应最高薪水的人员名称表)连接......

前言:以下试题中涉及的 table 均来自博主前面发的随笔“Mysql笔记(1)--- mysql 数据库概述;常用 DOS命令,sql命令(初步);

1.取得每个部门最高薪水的人员名称
    先取出每个部门的最高薪水,再作为临时表与(对应最高薪水的人员名称表)连接
    select
        e.name,t.*
    from 
        emp e
    join
        (select deptno,max(sal) as maxsal from emp group by deptno)t
    on 
        t.deptno = e.deptno and t.maxsal = e.sal


2. 哪些人的薪水在部门的平均薪水之上
    先取出每个部门的平均薪水,再作为临时表与(薪水在其部门平均薪水上的部门名称,薪水表)连接
    select
        t.*,e.ename,e.sal
    from
        emp e
    join
        (select deptno,avg(sal) as avgsal from emp group by deptno)t
    on
        e,deptno = t,deptno and e.sal > t.avgsal;


3.取得部门中所有人的平均薪水等级
    找到每个人的薪水等级(emp连接salgrade)
    select 
        e.ename,e.sal,e.deptno,s.grade 
    from 
        emp e 
    join 
        salgrade s 
    on 
        e.sal between s.losal and s.hisal;  
    基于以上结果继续按照deptno分组,求grade的平均值(直接两张表就行,不需要临时表)
    select 
        e.deptno,avg(s.grade)
    from 
        emp e 
    join 
        salgrade s
    on 
        e.sal between s.losal and s.hisal
    group by
        e.deptno;


4.不准用组函数(Max),取得最高薪水(给出两种解决方案)
    第一种,降序(limit)
    select ename,sal from emp order by sal desc limit 1;
    第二种方案,表的自连接
    select sal from emp where sal not in(select distinct a.sal from emp a join emp b on a.sal


5.取出平均薪水最高的两个部门编号(至少给出两种解决方案)
    第一种方案:
    select deptno,avg(sal) as avgsal from emp group by deptno order by avgsal desc limit 1;

    第二种解决方案:
    select max(t.avgsal) from (select avg(sal) as avgsal from emp group by deptno) t;
    select 
        deptno,avg(sal) as avgsal 
    from 
        emp 
    group by 
        deptno 
    having 
        avgsal = (select max(t.avgsal) from (select avg(sal) as avgsal from emp group by deptno) t);


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


7.取出比普通员工(员工代码没有在mgr字段出现的)的最高薪水还要高的领导人姓名
  注意:not in 在使用时,后面小括号里记得排除 null
    找到普通员工的最高薪水
    select max(sal) from emp where empno not in(select distinct mgr from emp where mgr is not null);
    找到高于(普通员工的最高薪水)的员工
    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));


8.取出薪水最高的前五名
    select ename,sal from emp order by sal desc limit 5;


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


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


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


12.列出所有员工及领导的名字
    select 
        a.ename "员工",b.ename "领导"
    from 
        emp a
    left join 
        emp b
    on 
        a.mgr = b.empno;


13.列出受雇日期早于直接上级的所有员工的姓名,受雇日期,直接上级的姓名,受雇日期,部门名称
    select 
        a.empno "员工",a.hiredate,b.ename "领导",b.hire    date,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;     


14.列出部门名称和这些部门的员工信息,同时列出那些没有员工的部门
    select 
        e.*,d.dname 
    from 


        emp e 
    right join 
        dept d 
    on 
        e.deptno = d.deptno;


15.列出至少有5个员工的所有部门
    select
        deptno
    from
        emp
    group by
        deptno
    having 
        count(*) >= 5;


16.列出薪水比“SMITH”多的所有员工
    select 
        ename,sal
    from 
        emp
    where
        sal > (select sal from emp where ename = "SMITH");


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


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


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


20.列出与“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.name <> "SCOTT";


21.列出薪水等于部门30中员工的薪水的其他员工的姓名和薪水
    select
        ename,sal
    from
        emp
    where
        sal in(select distinct sal from emp where deptno = 30) 
    and 
        deptno <> 30;


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


23.列出在每个部门工作的员工数量,平均工资和平均服务期限
    select
        d.deptno,
        count(e.ename) as ecount,
        ifnull(avg(e.sal),0) as avgsal,
        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;

    计算两个时间间隔的函数,语法为:

    timestampdiff(间隔类型,前一个日期,后一个日期)
    返回日期间的整数差。
    FRAC_SECOND   表示间隔是毫秒
    SECOND   秒
    MINUTE   分钟
    HOUR   小时
    DAY   天
    WEEK   星期
    MONTH   月
    QUARTER   季度
    YEAR   年


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


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


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


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


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


29.求出员工领导薪水超过3000的员工名称和领导
    select 
        a.ename "员工",b.ename "领导"
    from
        emp a
    join 
        emp b
    on 
        a.mgr = b.empno
    where
        b.sal > 3000;


30.求出部门名称带’S‘的部门员工的工资合计,部门人数
    select
        d.deptno,d.dname,d.loc,count(e.ename),ifnull(sum(e.sal),0) as sumsal
    from
        emp e
    right join
        dept d
    on
        e.deptno = d.deptno
    where 
        d.dname like "%S%"
    group by
        d.deptno,d.name,d.loc;


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


试题出处:https://www.bilibili.com/video/BV1fx411X7BD?p=1

ps:博主少写了3道哟!    ( •̀ ω •́ )✧

您可能感兴趣的文档:

--结束END--

本文标题: 【MySQL】试题 -

本文链接: https://www.lsjlt.com/news/8994.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • MySQL 面试题——MySQL 基础
    目录 1.什么是 MySQL?有什么优点?2.MySQL 中的 DDL 与 DML 是分别指什么?3.✨数据类型 varchar 与 char 有什么区别?4.数据类型 BLOB 与 TEXT...
    99+
    2023-09-20
    mysql 数据库 面试题
  • mysql面试题(最全)
    1. 数据库三大范式是什么? 什么是范式? 范式是数据库设计时遵循的一种规范,不同的规范要求遵循不同的范式。 最常用的三大范式 第一范式(1NF):属性不可分割,即每个属性都是不可分割的原子项。(实...
    99+
    2023-09-25
    mysql 数据库 面试
  • mysql笔试题18道
    部门表、员工表、薪水等级表 1.取得每个部门最高薪水人员名称 第一步:取得每个部门最高薪水作为临时表t  select deptno,max(sal) as maxSal from emp group by deptno 第...
    99+
    2023-09-02
    mysql 数据库 java
  • Java——《面试题——MySQL篇》
    前文 Java——《面试题——基础篇》 Java——《面试题——JVM篇》 Java——《面试题——多线程&并发篇》 Java——《面试题——Spring篇》 Java——《面试题——SpringBoot篇》 Java——《...
    99+
    2023-09-18
    mysql 数据库
  • MySQL面试题-索引篇
    目录 1.什么是索引 2.索引常见的数据结构? 3.MySQL有哪些索引? 4.什么是B+树?为什么B+树成为主要的SQL数据库的索引实现? 5.聚簇索引和非聚簇索引? 6.什么是页分裂 7.Mysql为何建议使用自增id作主键  8.什...
    99+
    2023-09-02
    mysql 数据库 java 面试
  • MySQL面试题有哪些
    本篇内容介绍了“MySQL面试题有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!非关系型数据库和关系型...
    99+
    2024-04-02
  • MySQL 精选 60 道笔试题
    基础 关系型和非关系型数据库的区别? 关系型数据库的优点 容易理解,因为它采用了关系模型来组织数据。 可以保持数据的一致性。 数据更新的开销比较小。 支持复杂查询(带 where 子句的查询...
    99+
    2023-09-01
    mysql 数据库
  • Mysql经典面试题20道
    我整理的必刷SQL经典题目 SQL语句在工作与面试时都必不可少,下面我整理了20道题目供大家练习,常见的使用方法和开窗函数都有考察,来测测你的sql技能是否过关。 一、创建表 共有4个表,分别是学生信息表、课程表、老师信息表和成绩表。 1 ...
    99+
    2023-08-22
    mysql 面试 数据库
  • 经典MySQL面试题有哪些
    这篇文章主要讲解了“经典MySQL面试题有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“经典MySQL面试题有哪些”吧!1.数据库三范式是什么第一范式(...
    99+
    2024-04-02
  • MySQL索引面试题有哪些
    这篇文章主要介绍“MySQL索引面试题有哪些”,在日常操作中,相信很多人在MySQL索引面试题有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”MySQL索引面试题有哪些”...
    99+
    2024-04-02
  • flink mysql cdc调试问题记录
    最近需要用到flink cdc作为数据流处理框架,在demo运行中发现一些问题,特此记录问题和解决过程。 无法读取table Caused by: java.lang.IllegalArgumentException: Can't ...
    99+
    2023-08-31
    flink 大数据
  • 有关Mysql面试题有哪些
    本篇内容主要讲解“有关Mysql面试题有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“有关Mysql面试题有哪些”吧!1. 数据库的三范式是什么?第一范式:...
    99+
    2024-04-02
  • MySQL基础面试题有哪些
    本篇内容主要讲解“MySQL基础面试题有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“MySQL基础面试题有哪些”吧!关系型数据库什么是关系型数据库?关系型...
    99+
    2024-04-02
  • 35个MySQL常见面试题+答案
    今天给大家总结了35 个 Mysql 常见的小问题 说一说三大范式 2.MyISAM 与 InnoDB 的区别是什么? 3.为什么推荐使用自增 id 作为主键? 4.一条查询语句是怎么执行的 5.使用 Innodb 的情况下,一条更新语句是...
    99+
    2023-09-11
    java 经验分享 数据库架构
  • mysql相关的面试题有哪些
    本篇内容介绍了“mysql相关的面试题有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!1. MYISA...
    99+
    2024-04-02
  • MySQL常见面试题(2023年最新)
    目录 前言1.char和varchar的区别2.数据库的三大范式3.你了解sql的执行顺序吗?4.索引是什么5.索引的优点和缺点6.索引的类型7.索引怎么设计(优化)8.怎么避免索引失效(也属于sql优化的一种)9.索引的数据类型1...
    99+
    2023-08-16
    mysql 数据库 java 面试 最新
  • MySQL的高频面试题有哪些
    本篇内容介绍了“MySQL的高频面试题有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!1.什么是关系型...
    99+
    2024-04-02
  • MySQL数据库期末考试试题及参考答案(01)
    版权声明 本文原创作者:谷哥的小弟作者博客地址:http://blog.csdn.net/lfdfhl 一、 填空题 ___在20世纪80年代被美国国家标准学会和国际标准化组织定义为关系型数据库语...
    99+
    2023-10-08
    mysql 期末考试
  • MySQL数据库期末考试试题及参考答案(02)
    版权声明 本文原创作者:谷哥的小弟作者博客地址:http://blog.csdn.net/lfdfhl 一、 填空题 创建数据库时,语句中添加____可以防止数据库已存在而引发的程序报错。如果使用...
    99+
    2023-10-09
    数据库 mysql 期末考试
  • MySQL精选60道面试题 ( 含答案 )
    2023的4月招聘季如此卷,没点真本事真技术,没点面试经验,不了解点职场套路,如何过五关斩六将? 找工作最重要的一步自然是面试,马上跳槽季,网上出现了各种面试题,一时会让人眼花缭乱,分不清最该看哪个。...
    99+
    2023-08-31
    面试 数据库 自动化测试 职场和发展 软件测试
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作