MySQL每日一练:多表查询——连接查询、子查询

目录

1、首先创建员工表emp和部门表dept:

dept表:

emp表: 

2、插入数据:

dept表:

emp表:

3、 按条件查找

1、首先创建员工表emp和部门表dept:

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);

2、插入数据:

dept表:

 insert into dept values (101,'财务');
​ insert into dept values (102,'销售');
​ insert into dept values (103,'IT技术');
​ insert into dept values (104,'行政');

emp表:

insert into emp values(1789,'张三',35,'1980/1/1',4000,101);
insert into emp values(1674,'李四',32,'1983/4/1',3500,101);
insert into emp values(1776,'王五',24,'1990/7/1',2000,101);
insert into emp values(1568,'赵六',57,'1970/10/11',7500,102);
insert into emp values(1564,'荣七',64,'1963/10/11',8500,102);
insert into emp values(1879,'牛八',55,'1971/10/20',7300,103);

3、 按条件查找:

1.找出销售部门中年纪最大的员工的姓名
select name from emp where age=(select max(age)from emp);

 2.求财务部门最低工资的员工姓名
select name 
from emp 
where incoming=(select min(incoming) from emp 
inner join dept
on emp.dept2=dept.dept1 and dept_name='财务') ;

 3.列出每个部门收入总和高于8000的部门名称 
SELECT dept.dept_name as 部门名称,sum(emp.incoming) as 总收入 
FROM emp 
INNER JOIN dept 
ON dept.dept1 = emp.dept2 
GROUP BY dept.dept_name HAAVING 总收入 > 8000;
 4.求工资在7500到8500元之间,年龄最大的人的姓名及部门  
select emp.name,dept.dept_name,emp.age,emp.incoming
from emp 
inner join dept
on emp.dept2=dept.dept1 
where incoming between 7500 and 8500 and age=(select max(age) from emp);
5.找出销售部门收入最低的员工入职时间
select emp.worktime_start 
from emp 
inner join dept 
on emp.dept2=dept.dept1 where incoming=(select min(incoming) from emp);

6.财务部门收入超过2000元的员工姓名
select emp.name from emp 
inner join dept 
on emp.dept2=dept.dept1 where incoming>2000 and dept.dept_name='财务';

7.列出每个部门的平均收入及部门名称
select dept_name,avg(emp.incoming) as 部门平均收入 
from emp innerjoin dept 
on emp.dept2=dept.dept1  group by dept.dept_name;

8.IT技术部入职员工的员工号
select dept.dept_name,emp.sid 
from emp inner 
join dept 
on emp.dept2=dept.dept1  where dept.dept_name='IT技术';

9.财务部门的收入总和;
select dept.dept_name,sum(incoming) as ‘总收入’ 
from emp 
inner join dept 
on emp.dept2=dept.dept1  where dept.dept_name='财务';

10.先按部门号大小排序,再依据入职时间由早到晚排序员工信息表*  
select dept.dept_name,emp.dept2 
from emp 
inner join dept 
on emp.dept2=dept.dept1  order by dept.dept1;
select dept.dept_name,worktime_start 
from emp 
inner join dept 
on emp.dept2mp.dept2=dept.dept1  order by worktime_start;

11.找出哪个部门还没有员工入职; 
select * from emp where worktime_start is null;
 12.列出部门员工收入大于7000的部门编号,部门名称;
SELECT emp.dept2,dept.dept_name,incoming FROM emp INNER JOIN dept
ON emp.dept2 = dept.dept1 where incoming>7000;

13.列出每一个部门的员工总收入及部门名称; 
SELECT dept.dept_name as '部门名称',sum(incoming) as '部门员工总收入' 
FROM emp 
inner JOIN dept 
ON emp.dept2 = dept.dept1 group by dept.dept_name;

14.列出每一个部门中年纪最大的员工姓名,部门名称*
SELECT dept.dept_name,age 
FROM (SELECT dept2, MAX(age) AS max_ageFROM emp GROUP BY dept2 )
AS 
max_age_table 
INNER JOIN emp 
ON emp.dept2 = max_age_table.dept2 AND emp.age = max_age_table.max_age 
INNER JOIN dept 
ON emp.dept2 = dept.dept1;

15.求李四的收入及部门名称
SELECT emp.name,incoming,dept.dept_name as '部门名称'  
FROM emp 
INNER JOIN dept 
ON emp.dept2 = dept.dept1 where name='李四';

16.列出每个部门中收入最高的员工姓名,部门名称,收入,并按照收入降序*
SELECT emp.name,dept.dept_name,emp.incoming 
FROM (SELECT dept2,2, MAX(incoming) 
AS 
max_incoming 
FROM emp     
GROUP BY dept2 )
AS 
max__incoming_table 
INNER JOIN emp 
ON emp.dept2 = max_incoming_table.dept2 ANDD emp.incoming = max_incoming_table.max_incoming INNER JOIN dept 
ON emp.deept2 = dept.dept1 ORDER BY emp.incoming DESC;

17.列出部门员工数大于1个的部门名称*
SELECT dept.dept_name 
FROM dept 
INNER JOIN (SELECT dept2, COUNT(*) 
AS 
emp_count FROM emp GROUP BY dept2  HAVING COUNT(*) > 1 ) 
AS 
emp_count_table ON dept.dept1 = emp_count_table.dept2;

18.查找张三所在的部门名称
SELECT emp.name,dept.dept_name as '部门名称' 
FROM emp 
INNER JOINdept 
ON emp.dept2 = dept.dept1 where name='张三';

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/207.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

存储优化和Protobuf

存储优化和Protobuf 本文链接:https://blog.csdn.net/feather_wch/article/details/131649688 文章目录 存储优化和ProtobufAndroid存储方式Protobuf介绍使用原理 7z压缩 Android存储方式 1、Android存储方式 SharePreferenceSQLite: 复杂的数据结构File -> p…

以太网(Ethernet)入门了解

以太网(Ethernet)是一种常见的局域网(LAN)通信协议,它是由Xerox公司于1970年代中期开发的。以太网是一种基于广播技术的开放式网络协议,它允许设备在共享通信介质上进行通信。以下是关于以太网的基本概念、…

MySQL 多表查询练习

1.创建student和score表 CREATE TABLE student ( id INT(10) NOT NULL UNIQUE PRIMARY KEY , name VARCHAR(20) NOT NULL , sex VARCHAR(4) , birth YEAR, department VARCHAR(20) , address VARCHAR(50) );创建score表。SQL代码如下: CREATE TABLE s…

OpenCV 入门教程:Laplacian算子和Canny边缘检测

OpenCV 入门教程: Laplacian 算子和 Canny 边缘检测 导语一、Laplacian 算子二、Canny 边缘检测三、示例应用3.1 图像边缘检测3.2 边缘增强 总结 导语 边缘检测在图像处理和计算机视觉领域中起着重要的作用。 Laplacian 算子和 Canny 边缘检测是两种常用的边缘检测…

CAT1模块 EC800M HTTP使用总结记录

分享记录一下 CAT1 模块EC800 HTTP 协议使用流程 ...... by 矜辰所致目录 前言一、基础说明1.1 CAT1 与 4G1.2 EC800M 模块1.3 HTTP 二、开始使用2.1 硬件设计部分2.2 模块上电流程2.3 PDP 上下文2.3.1 什么是 SGSN 和 GGSN ? 三、 HTTP 流程3.1 客户端3.1.1 PDP 上…

Spring MVC JSON 数据交互

🔔 JSON 语法 | 菜鸟教程 为实现浏览器与控制器类之间的 JSON 数据交互, Spring MVC 提供了 MappingJackson2HttpMessageConverter 实现类默认处理 JSON 格式请求响应。该实现类利用 Jackson 开源包读写 JSON 数据,将 Java 对象转换为 JSO…

k8s发生故障,可以从哪些方面排查

目录 第一方面:审视集群状态 第二方面:追踪事件日志 第三方面:聚焦Pod状态 第四方面:检查网络连通性 第五方面:审视存储配置 第六方面:研究容器日志 第一方面:审视集群状态 K8S的集群状态…

Ubuntu18.04 系统安装 Docker

1、首先更新软件源: sudo apt-get updatesudo apt-get upgrade 2、安装Docker: sudo apt install docker -y 3、查看安装的Docker apt list docker 4、查看docker 进程 ps -ef|grep docker 5、查看docker 版本有问题 6、开启Docker服务 systemctl…

10_SPI_Flash 连续写实验

10_SPI_Flash 连续写实验 1. 实验目标2. 连续写方法3. 操作时序4. 流程框图4.1 顶层模块4.2 连续写模块 5. 波形图6. RTL6.1 flash_seq_wr_ctrl6.2 spi_flash_seq_wr 7. Testbench 1. 实验目标 使用页写指令,将串口发送过来的连续不定量数据写入 Flash。本实验中&a…

Web安全——数据库mysql学习

数据库mysql基础 Web安全分享一、数据库的基本操作1、MYSQL登录与退出2、MYSQL数据库的一些解释3、MYSQL注释符有三种: 二、数据库的一些基本操作1、数据库的增删改查(sql语句) 三、table 表的操作1、查看表结构2、查看表的内容3、建立表4、约束条件5、修改表的操作…

网络通信原理系统的认知(NEBASE第十四课)

1 物理层 第一层 物理层:建立、维护、断开物理连接,定义了接口及介质,实现了比特流的传输。 1.1传输层介质分类 有线介质:网线 (双绞线)光纤 无线: 无线电 1.2 双绞线 五类线 cat5 :适用 10…

“深入解析Redis的数据结构与应用场景“

标题:深入解析Redis的数据结构与应用场景 摘要:本文将深入解析Redis的数据结构与应用场景,包括字符串、列表、哈希表、集合和有序集合。通过详细介绍每种数据结构的特点和常见使用场景,帮助开发工程师更好地理解和应用Redis。 正…

Docker的使用

1. Docker的含义 1. 镜像:别人开发好的基础,类似C中的类 2. 容器:自己创建的实例 2.如何使用docker 可以从网上拉取相应的镜像,然后宿主机以下命令:创建Dockerfile文件docker build -t image_name:tag . 创建自己的do…

RxJava 2.0 全体系梳理(持续更新ing)

事件流 数据流 如何组合和变换流 如何订阅任何可观察的数据流 目录 一.源码解析 二.基本使用 步骤 一、创建Observable 二、创建Observer 三、使用subscribe进行订阅 四、取消订阅 Disposable 五种Observable(被观察者) Observable 和 Observer Cold Observable …

第二次CCF计算机软件能力认证

第一题:相邻数对 给定 n 个不同的整数,问这些数中有多少对整数,它们的值正好相差 1。 输出格式 输入的第一行包含一个整数 n,表示给定整数的个数。 第二行包含所给定的 n 个整数。 输出格式 输出一个整数,表示值正好相…

KMP算法

KMP KMP 算法是一个快速查找匹配串的算法,它的作用其实就是本题问题:如何快速在「原字符串」中找到「匹配字符串」。 而 KMP 算法的复杂度为 O(mn)实际上是O(N),因为O(M)不可能大于O(N) KMP 之所以能够在 O(mn)复杂度内完成查找,是因为其能…

uniapp:tabBar配置后不显示的问题

问题描述 uniapp的tabBar配置后不显示 问题解决 tabBar.list 数组的第一项必须和pages配置中的第一项要相同 参考文章 uniapp tabBar配置后不显示,无效的问题

巴斯夫与长三角物理研究中心开展合作,专注固态和钠离子电池领域

“巴斯夫,全球知名化学公司,宣布与长三角物理研究中心合作,在江苏溧阳市成立联合研究中心,专注于固态电池和钠离子电池的科研。” 根据巴斯夫官方微博消息,新成立的研究中心名为“巴斯夫–长三角物理研究中心新能源汽车…

高德地图的使用

JS API 结合 Vue 使用 高德地图 jsapi 下载、引入 npm add amap/amap-jsapi-loaderimport AMapLoader from amap/amap-jsapi-loader 使用2.0版本的loader需要在window对象下先配置 securityJsCode JS API 安全密钥使用 JS API 使用 script 标签同步加载增加代理服务器设置…

【计算机网络】网络编程套接字(二)

文章目录 网络编程套接字(二)简单TCP服务器实现创建套接字服务器绑定服务器监听服务器接收连接服务器处理请求 简单TCP客户端实现创建套接字客户端发起连接客户端发起请求 服务器简单测试服务器简单测评多进程版TCP服务器捕捉SIGCHLD信号孙子进程提供服务…