两组表单看懂MySQL的多表查询

 第一组表单信息

1、查询每个部门的所属员工

mysql> SELECT name,GROUP_CONCAT(ename) persons-> FROM dept3 d-> LEFT JOIN emp3 e-> ON d.deptno = e.dept_id-> GROUP BY d.deptno-> UNION -> SELECT name,GROUP_CONCAT(ename) persons-> FROM dept3 d-> RIGHT JOIN emp3 e-> ON d.deptno = e.dept_id-> GROUP BY e.dept_id-> ;

2、查询研发部门的所属员工

mysql> select name,group_concat(ename)-> from dept3 d,emp3 e-> where name = '研发部' and d.deptno=e.dept_id-> group by name;

3、查询研发部和销售部的所属员工

mysql> select name,group_concat(ename)-> from dept3 d,emp3 e-> where (name='研发部' or name='销售部')-> and d.deptno=e.dept_id-> group by name;

 

4、查询每个部门的员工数,并升序排序

mysql> SELECT name,COUNT(ename) persons-> FROM dept3 d-> LEFT JOIN emp3 e-> ON d.deptno = e.dept_id-> GROUP BY d.deptno-> -> UNION-> -> SELECT name,COUNT(ename) persons-> FROM dept3 d-> RIGHT JOIN emp3 e-> ON d.deptno = e.dept_id-> GROUP BY e.dept_id-> ORDER BY persons-> ;

5、查询人数大于等于3的部门,并按照人数降序排序

mysql> SELECT name,COUNT(ename) persons-> FROM dept3 d-> LEFT JOIN emp3 e-> ON d.deptno = e.dept_id-> GROUP BY d.deptno-> HAVING persons > 3->    -> UNION->      -> SELECT name,COUNT(ename) persons-> FROM dept3 d-> RIGHT JOIN emp3 e-> ON d.deptno = e.dept_id-> GROUP BY e.dept_id-> HAVING persons > 3-> ORDER BY persons-> ;


第二组表单信息

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

mysql> select name from dept,emp-> where dept1=dept2-> and age=(select max(age) from emp where dept_name='销售')-> ;

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

mysql> select name from dept,emp-> where dept1=dept2-> and incoming=(select min(incoming) from emp where dept_name='财务')-> ;

 

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

mysql> SELECT dept.dept_name,SUM(emp.incoming) AS total-> FROM dept-> LEFT JOIN emp -> ON dept.dept1 = emp.dept2-> GROUP BY dept.dept_name-> HAVING total > 9000-> ;

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

mysql> SELECT d.dept_name,e.name-> FROM dept d-> LEFT JOIN emp e -> ON d.dept1 = e.dept2-> Where incoming Between 7500 And 8500-> Order By e.age Desc-> Limit 1-> ;

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

mysql> SELECT e.worktime_start-> FROM dept d-> LEFT JOIN emp e -> ON d.dept1 = e.dept2-> Where d.dept_name='销售'-> Order By e.incoming-> Limit 1-> ;

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

mysql> SELECT e.name-> FROM dept d-> LEFT JOIN emp e -> ON d.dept1 = e.dept2-> Where d.dept_name='财务'-> And incoming > 2000-> ;

  

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

mysql> SELECT d.dept_name,avg(e.incoming)-> FROM dept d-> LEFT JOIN emp e -> ON d.dept1 = e.dept2-> Group By d.dept_name-> ;

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

mysql> SELECT sid-> FROM dept d-> LEFT JOIN emp e -> ON d.dept1 = e.dept2-> where d.dept_name='IT技术'-> ;

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

mysql> SELECT sum(e.incoming) total-> FROM dept d-> LEFT JOIN emp e -> ON d.dept1 = e.dept2-> Group By d.dept_name-> Having d.dept_name='财务'-> ;

  

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

mysql> SELECT *-> FROM dept d-> LEFT JOIN emp e -> ON d.dept1 = e.dept2-> Order By dept1 Desc,worktime_start Asc-> ;

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

mysql> SELECT dept_name-> FROM dept d-> LEFT JOIN emp e -> ON d.dept1 = e.dept2-> Where e.name Is Null -> ;

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

在MySQL的ONLY_FULL_GROUP_BY模式下,所有非聚合的SELECT列都必须包含在GROUP BY子句中,并且SELECT列表中的列必须对GROUP BY子句中的列有功能上的依赖关系。

mysql> SELECT dept1 As dept_num,d.dept_name,Max(e.incoming)-> FROM dept d-> LEFT JOIN emp e -> ON d.dept1 = e.dept2-> Group By d.dept1,d.dept_name-> Having Max(incoming) > 7000-> ;

 

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

mysql> SELECT dept_name,Sum(e.incoming)-> FROM dept d-> LEFT JOIN emp e -> ON d.dept1 = e.dept2-> Group By d.dept1,d.dept_name-> ;

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

子查询
mysql> SELECT d.dept_name, e.name, e.age-> FROM dept d-> LEFT JOIN emp e ON d.dept1 = e.dept2->      JOIN (->            SELECT dept2, MAX(age) AS max_age->            FROM emp->            GROUP BY dept2->           ) AS m->       ON e.dept2 = m.dept2 AND e.age = m.max_age-> ;

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

mysql> SELECT dept_name,name,incoming-> FROM dept d-> LEFT JOIN emp e -> ON d.dept1 = e.dept2-> Having name='李四'-> ;

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

mysql> SELECT dept_name,name,incoming-> FROM dept d-> LEFT JOIN emp e -> ON d.dept1 = e.dept2-> Where e.incoming Is Null -> Or (e.incoming=(Select Max(incoming) ->                 From emp->                 Where dept2=e.dept2 ->                )->    )-> ;

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

mysql> SELECT dept_name-> FROM dept-> WHERE dept1 IN (->     SELECT dept2->     FROM emp->     GROUP BY dept2->     HAVING COUNT(*) > 1-> );

  

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

mysql> SELECT dept_name-> FROM dept-> WHERE dept1 IN (->     SELECT dept2->     FROM emp->     Where name='张三'-> );

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

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

相关文章

分层解耦-IOCDI引入

目录 分层解耦 如何解除耦合 控制反转(IOC) 依赖注入(DI) Bean对象 分层解耦 内聚:软件中各个功能模块内部的功能联系耦合:衡量软件中各个层/模块之间的依赖、关联程度软件设计原则:高内聚…

开源Cillium项目为容器提供强大的网络功能

试验性的开源Cillium项目使用Linux内核的一项现有特性,为容器提供高速、强大的网络功能。一项名为Cilium的开源项目试图基于Linux内核中所用的技术,为容器提供一种新的网络方法。 试验性的开源Cillium项目使用Linux内核的一项现有特性,为容器…

HP Laser 136nw打印机与win10实现Wifi直连

HP Laser 136nw打印机与win10实现Wifi直连 HP Laser 136nw打印机设置HP Smart HP Laser 136nw打印机设置 打开打印机WIFI开关,使其他设备可以搜索到 查看打印机设备名称,用于设备搜索 查看打印机WIFI密钥,用于windows与打印机直连 根据…

手写JAVA线程池

前言 手写一个简单的java线程池:重点关注,如何确保一直有运行的线程?如何确保线程消费提交的任务信息?。一直保存有运行的线程底层使用的是死循环。使用消息队列确保信息的提交和消费。消息队列使用先进先出原则。 步骤 线程池…

iOS开发 - 系统自带框架实现扫一扫功能

iOS 扫一扫 利用系统自带框架实现扫一扫功能 一 项目配置 扫一扫功能相机和相册权限&#xff0c;在info.plist中设置询问用户是否允许访问的权限。 info.plist加入NSCameraUsageDescription、NSPhotoLibraryUsageDescription、NSPhotoLibraryAddUsageDescription <key&g…

spring 详解二 IOC(Bean xml配置及DI)

配置列表 Xml配置 功能描述 <bean id"" class""></bean> Bean的id&#xff0c;配置id会转为Bean名称和不配就是全限定类名 <bean name"" ></bean> Bean的别名配置&#xff0c;存储在Factory的aliasMap中通过别名也…

操作系统Linux—day01

编程 网页 软件 网站项目 知识点&#xff1a; 前端页面&#xff1a;HTML css JavaScript JQuery VUE 数据库&#xff1a;Oracle MySQL 服务器&#xff1a;服务器的操作系统Linux Http://115.159.96.174:8090/EasyBuy/ www.baidu.com>http://180.101.49.12/ 后台技术…

几何伙伴行泊一体解决方案入选浦东人工智能十大创新技术

2023年7月8日&#xff0c;在全球瞩目的世界人工智能大会&#xff08;WAIC&#xff09;浦江东岸分会场&#xff0c;主题为“引领未来&#xff0c;赋能焕新”的“2023世界人工智能大会浦东论坛”隆重举办。浦东新区作为全国首个人工智能创新应用先导区&#xff0c;正打造上海人工…

electron的(maximize)最大化方法会导致头部白色横条以及四周大黑边

参考文章&#xff1a;https://www.w3cways.com/2505.html 感谢这位博主 我在使用win.maximize()后发现应用程序虽然最大化了&#xff0c;但是四周和顶部有一定宽度的黑边白边&#xff0c;在百度一段时间后没有发现其他人有这个问题 &#x1f614;唉 必现步骤&#xff1a; 只要…

前端理解的HTTP缓存(作用、缓存策略、缓存控制机制、应用)

一、HTTP缓存有什么作用&#xff1f; 缓存是为了重复使用而被存储的&#xff0c;可以减少浏览器和服务器之间通信的次数、降低网络延迟、加速页面加载、提高用户体验性等。不但能使网页打开速度更快&#xff0c;还能减少服务器的压力。 二、 浏览器的缓存策略有哪些&#xff1…

【MySQL】不就是事务

前言 嗨咯&#xff0c;小伙伴们大家好呀&#xff0c;我已经一个星期没有更新了&#xff0c;实在抱歉&#xff01;本期我们要学习MySQL初阶中的最后一课&#xff0c;MySQL数据库中的事务也算是近几年面试必考的问题&#xff0c;所以我们一定要认真学习。 目录 前言 目录 一、事…

派盘支持单向和双向资料同步

派盘作为一款本地云存储解决方案&#xff0c;不仅支持双向同步&#xff0c;还提供了设置部分文件夹单向同步的功能。这意味着用户可以根据自己的需求&#xff0c;精确控制文件夹的同步方向&#xff0c;以实现更有针对性的文件管理和同步。 π-Disk派盘 – 知识管理专家 派盘的…