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.hqwc.cn/news/20944.html

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

相关文章

【MQ】Windows上RabbitMQ的安装与启动

文章目录 下载Erlang安装RabbitMQ 下载Erlang RabbitMQ基于Erlang语言,因此使用RabbitMQ之前需要先安装Erlang,如下 Erlang语言下载 这里我是用的是25.2.2这个版本,我的机器是64bit的,所以下win64的即可。 下载完毕安装包之后点…

2023年软件测试岗位将会越来越少吗?

我的整体意见是测试岗位不会变少,反而相对于其他岗位会变的更重要一些。 首先纠正一个非常非常错误的观念。测试和测试开发是两个岗位?No,不是的。测试开发是属于测试的。 测试开发只不过是使用类似于开发的技术和能力,来达到测试…

【接口/性能测试】Jmeter引用 jar包的三种方式(详细)

目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 实现对登录密码进…

idea-spring boot开发

安装maven与配置配置maven安装插件 已经装好了idea与jdk 安装maven与配置 下载地址: https://maven.apache.org/download.cgi 下载合适的版本 配置maven 打开设置: 直接搜索 :maven 配置变量: 此电脑->属性->高级系统设置->环境变量 新建系统变量 MAVEN_HOME&#xff…

windows提权总结

文章目录 windows基础知识提权总结基础知识提权思路metasplit 提权反弹shell提权windows系统配置错误提权系统服务权限配置错误不带引号的服务路径提权注册键 AlwaysInstallElevated 本地dll劫持提权第三方提权sqlserver提权mysql提权MOF提权G6FTP提权 绕过UAC bypassuac远程终…

使用 TensorRT、卡尔曼滤波器和 SORT 算法进行实时对象检测和跟踪:第 1 部分训练模型

实时物体检测和跟踪在监控、自动驾驶和机器人等各种应用中至关重要。这些任务需要能够实时处理高分辨率视频流的高效算法。近年来,基于深度学习的目标检测算法(例如YOLO、SSD和Faster R-CNN)在图像和视频中的目标检测和定位方面显示出了令人印象深刻的结果。然而,这些算法的…

rust 自动化测试、迭代器与闭包、智能指针、无畏并发

编写测试可以让我们的代码在后续迭代过程中不出现功能性缺陷问题&#xff1b;理解迭代器、闭包的函数式编程特性&#xff1b;Box<T>智能指针在堆上存储数据&#xff0c;Rc<T>智能指针开启多所有权模式等&#xff1b;理解并发&#xff0c;如何安全的使用线程&#x…

基于深度学习的高精度课堂人脸检测系统(PyTorch+Pyside6+YOLOv5模型)

摘要&#xff1a;基于深度学习的高精度课堂人脸检测系统可用于日常生活中或野外来检测与定位课堂人脸目标&#xff0c;利用深度学习算法可实现图片、视频、摄像头等方式的课堂人脸目标检测识别&#xff0c;另外支持结果可视化与图片或视频检测结果的导出。本系统采用YOLOv5目标…

回归预测 | MATLAB实现ELM极限学习机多输入单输出回归预测(多指标、相关图)

回归预测 | MATLAB实现ELM极限学习机多输入单输出回归预测(多指标、相关图) 目录 回归预测 | MATLAB实现ELM极限学习机多输入单输出回归预测(多指标、相关图)效果一览基本介绍程序设计学习总结参考资料效果一览 基本介绍 回归预测 | MATLAB实现ELM极限学习机多输入单输出回…

pandas 笔记 style 调整DataFrame格式

1 format 1.0 数据 # Visual Python: Data Analysis > File vp_df pd.read_csv(https://raw.githubusercontent.com/visualpython/visualpython/main/visualpython/data/sample_csv/iris.csv) vp_dfvp_df[:5] vp_df.at[0,sepal_length]np.nan vp_df.at[2,sepal_length]10…

文心一言 VS 讯飞星火 VS chatgpt (58)-- 算法导论6.4 2题

文心一言 VS 讯飞星火 VS chatgpt &#xff08;58&#xff09;-- 算法导论6.4 2题 二、试分析在使用下列循环不变量时&#xff0c;HEAPSORT 的正确性&#xff1a;在算法的第 2~5行 for 循环每次迭代开始时&#xff0c;子数组 A[1…i]是一个包含了数组A[1…n]中第i小元素的最大…

Java阶段五Day03

Java阶段五Day03 文章目录 Java阶段五Day03回顾git命令Git远程仓库远程仓库概念远程仓库分支操作分支管理策略单体架构(微服务理论基础) 附录 补充内容idea运行多个springboot-web应用 回顾git命令 本地版本控制 git initgit addgit commitgit loggit statusgit taggit reflo…