MySQL数据库——多表查询练习2

news/2024/11/8 9:35:00/

一、练习素材

创建表

--创建部门表dept
create table dept (
dept1 int ,
dept_name varchar(11));--创建员工表emp
create table emp (
sid int ,
name varchar(11),
age int,
worktime_start date,
incoming int,
dept2 int);

插入数据

--部门表插入数据
insert into dept values
(101,'财务'),
(102,'销售'),
(103,'IT技术'),
(104,'行政');--员工表插入数据
insert into emp values(
1789,'张三',35,'1980/1/1',4000,101),
(1674,'李四',32,'1983/4/1',3500,101),
(1776,'王五',24,'1990/7/1',2000,101),
(1568,'赵六',57,'1970/10/11',7500,102),
(1564,'荣七',64,'1963/10/11',8500,102),
(1879,'牛八',55,'1971/10/20',7300,103);

查询表中数据如下图

二、练习题目

    1.找出销售部门中年纪最大的员工的姓名

    2.求财务部门最低工资的员工姓名

    3.列出每个部门收入总和高于9000的部门名称

    4.求工资在7500到8500元之间,年龄最大的人的姓名及部门

    5.找出销售部门收入最低的员工入职时间

    6.财务部门收入超过2000元的员工姓名

    7.列出每个部门的平均收入及部门名称

    8.IT技术部入职员工的员工号

    9.财务部门的收入总和;

    10.先按部门号大小排序,再依据入职时间由早到晚排序员工信息表

    11.找出哪个部门还没有员工入职;

    12.列出部门员工收入大于7000的部门编号,部门名称;

    13.列出每一个部门的员工总收入及部门名称;

    14.列出每一个部门中年纪最大的员工姓名,部门名称;

    15.求李四的收入及部门名称

    16.列出每个部门中收入最高的员工姓名,部门名称,收入,并按照收入降序

    17.列出部门员工数大于1个的部门名称

    19.查找张三所在的部门名称

参考答案

注:14题和16题我用到的是嵌套查询

--1.找出销售部门中年纪最大的员工的姓名
mysql> select name from dept d join emp e on d.dept1=e.dept2 -> where dept_name='销售'-> order by age desc-> limit 1;--2.求财务部门最低工资的员工姓名
mysql> select name from dept d join emp e on d.dept1=e.dept2-> where dept_name='财务'-> order by incoming asc-> limit 1;--3.列出每个部门收入总和高于9000的部门名称
mysql> select dept_name from dept d join emp e on d.dept1=e.dept2 -> group by dept_name-> having sum(incoming)>9000;--4.求工资在7500到8500元之间,年龄最大的人的姓名及部门
mysql> select name,dept_name from dept d join emp e on d.dept1=e.dept2-> where incoming between 7500 and 8500 -> order by age desc-> limit 1;--5.找出销售部门收入最低的员工入职时间
mysql> select worktime_start from dept d join emp e on d.dept1=e.dept2-> where dept_name='销售'-> order by incoming asc-> limit 1;--6.财务部门收入超过2000元的员工姓名
mysql> select name from dept d join emp e on d.dept1=e.dept2 -> where dept_name='财务' and incoming>2000;--7.列出每个部门的平均收入及部门名称
mysql> select avg(incoming),dept_name from dept d join emp e on d.dept1=e.dept2-> group by dept_name;--8.IT技术部入职员工的员工号
mysql> select sid from dept d join emp e on d.dept1=e.dept2-> where dept_name='IT技术';--9.财务部门的收入总和;
mysql> select sum(incoming) from dept d join emp e on d.dept1=e.dept2-> where dept_name='财务';--10.先按部门号大小排序,再依据入职时间由早到晚排序员工信息表
mysql> select * from dept d join emp e on d.dept1=e.dept2-> order by dept1 asc,worktime_start asc;--11.找出哪个部门还没有员工入职;
mysql> select dept_name from dept d left join emp e on d.dept1=e.dept2-> where name is NULL;--12.列出部门员工收入大于7000的部门编号,部门名称;
mysql> select distinct dept_name,dept1 from dept d join emp e on d.dept1=e.dept2-> where incoming>7000;--13.列出每一个部门的员工总收入及部门名称;
mysql> select sum(incoming),dept_name from dept d join emp e on d.dept1=e.dept2-> group by dept_name;--14.列出每一个部门中年纪最大的员工姓名,部门名称;
mysql> select name,dept_name,age from dept d right join emp e on d.dept1=e.dept2-> where(-> select count(*) from emp e2 -> where e2.age>e.age and dept1=dept2-> )=0;--15.求李四的收入及部门名称
mysql> select incoming,dept_name from dept d join emp e on d.dept1=e.dept2-> where name='李四';--16.列出每个部门中收入最高的员工姓名,部门名称,收入,并按照收入降序
mysql> select name,dept_name,incoming from dept d right join emp e on d.dept1=e.dept2-> where (-> select count(*) from emp e2-> where e2.incoming>e.incoming and dept1=dept2-> )=0-> order by incoming desc;--17.列出部门员工数大于1个的部门名称
mysql> select dept_name from dept d join emp e on d.dept1=e.dept2-> group by dept_name-> having count(*)>1;--19.查找张三所在的部门名称
mysql> select dept_name from dept d join emp e on d.dept1=e.dept2-> where name='张三';


http://www.ppmy.cn/news/806504.html

相关文章

配置域名,开启HTTPS

目录 一、购买域名 二、安装Nginx服务器 三、为云主机绑定域名 四、开启HTTPS协议 五、执行备案 一、购买域名 微信平台有规定,小程序上线之后,只能通过域名访问后端的Java项目,所以我们要为云主机购买一个域名。 大家请注意&#xff0c…

绝地求生国服服务器维护中是什么意思,绝地求生服务器维护了 绝地求生服务器维护...

9月27日绝地求生服务器维护吗 方法1:打开360安全卫士,工具里,打开修复lsp,然后立即修复。 系统保留网速设置,运行的对话框,在输入文字的位置,输入命令gpedit.msc,调出组策略进行设置…

android 模拟器 绝地求生,绝地求生全军出击电脑模拟器怎样设置?绝地求生全军出击安卓模拟器配置教程...

绝地求生全军出击PC模拟器怎样设置?绝地求生全军出击是目前非常火热的吃鸡游戏,现在官方并没有推出正式的电脑版,所以在电脑上想要体验绝地求生全军出击就必须要使用安卓模拟器,为大家带来绝地求生全军出击逍遥安卓模拟器配置教程&#xff0…

SNK施努卡-表面检测机器视觉 机器视觉表面缺陷检测

表面缺陷是工业产品生产中不可避免的问题,如果不及时发现处理,将会影响产品的外观质量及性能,导致企业生产效益下降。现如今,基于机器视觉的表面检测方法在很多现代化企业中得到了广泛的应用,在文中将分析主流机器视觉…

二分图博弈(知识总结+例题)

思路来源 gzchenben的ppt 算法学习笔记(74): 二分图博弈 - 知乎 https://www.cnblogs.com/Zeardoe/p/16534557.html 知识点总结 以下部分摘自知乎:算法学习笔记(74): 二分图博弈 - 知乎 二分图博弈模型 给出一张二分图和起始点 H , A和B轮流操作…

对多路冗余信号进行剔除和融合处理

对于多路冗余信号data ,考虑两两信号之间的相关性,当相关性低于阈值corrThre 时,认为两路信号中有一路存在畸变,遍历所有信号,当某一路信号与其他numThre路信号对比均存在畸变时,则删除该信号。 function …

发生系统错误 5。 拒绝访问。

今天重装系统之后,使用命令net start mysql启动数据库服务时候,发现,出现如下错误 原因:是当前用户的权限过低导致 解决方法: winx打开一个面板如下,选择命令提示符(管理员) 然后再…