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

news2024/11/16 3:25:36

 第一组表单信息

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 oldest 
    -> From dept d
    -> Inner Join emp e
    -> on dept1=dept2
    -> Order By age Desc
    -> Limit 1;

 

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

mysql> Select name 
    -> From dept d
    -> Inner Join emp e
    -> On dept1=dept2
    -> Order By incoming
    -> limit 1;

 

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.coloradmin.cn/o/735001.html

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

相关文章

代码随想录算法训练营第六十天| 84.柱状图中最大的矩形

柱状图中最大的矩形 题目链接: 力扣 假设以柱子1(指值为1的柱子)为基准,柱子1的左侧没有比柱子1矮的元素,所以柱子1可以无限像左边扩展,柱子1的右侧也没有比柱子1矮的元素,所以柱子1可以无限向…

用OpenCV进行图像分割--进阶篇

1. 引言 大家好,我的图像处理爱好者们! 在上一篇幅中,我们简单介绍了图像分割领域中的基础知识,包含基于固定阈值的分割和基于OSTU的分割算法。这一次,我们将通过介绍基于色度的分割来进一步巩固大家的基础知识。 闲…

如何提升问卷数据的有效性?

问卷调查法是收集数据的宝贵工具,可以为商业、社会科学和医疗保健等众多领域的决策过程提供真实可靠的数据信息。然而,问卷数据的准确性和可靠性是影响最终结论的关键因素,而他们取决于问卷设计和数据收集过程的质量。在本文中,我…

Coggle 30 Days of ML(23年7月)任务三:使用TFIDF提取文本特征

Coggle 30 Days of ML(23年7月)任务三:使用TFIDF提取文本特征 任务三:使用TFIDF提取文本特征 说明:在这个任务中,需要使用Sklearn库中的TFIDF技术来提取文本特征,将文本转化为可供机器学习算法…

数分面试题:赛马问题

问题一: 25匹马,一个赛道,每次可以跑5匹马,在没有计时器的情况下,怎么用最小的比赛次数知道最快的前三名 关键点:通过前面的比赛,排除掉没有悬念的马(能确定有3匹马比它快的&#…

Iptables与Firewalld

Iptables防火墙 介绍 iptables和netfilter是一套Linux防火墙工具,共同合作完成系统防护工作。iptables 是一个包过滤防火墙,可以对包进行封装、过滤、重定向或者网络地址转换、地址伪装、透明代理、访问控制、连接跟踪等功能,iptables是一个…

4.6 x64dbg 内存扫描与查壳实现

LyScript 插件中默认提供了多种内存特征扫描函数,每一种扫描函数用法各不相同,在使用扫描函数时应首先搞清楚不同函数之间的差异,本章内容将分别详细介绍每一种内存扫描函数是如何灵活运用,并实现一种内存查壳脚本,可快…

Linux常用命令——exec命令

在线Linux命令查询工具 exec 调用并执行指定的命令 补充说明 exec命令用于调用并执行指令的命令。exec命令通常用在shell脚本程序中,可以调用其他的命令。如果在当前终端中使用命令,则当指定的命令执行完毕后会立即退出终端。 语法 exec(选项)(参数…

计算机组成原理32位MIPS CPU设计实验(指令译码器电路设计 、时序发生器状态机设计、时序发生器输出函数、硬布线控制器)

实验四 32位MIPS CPU设计实验 这次实验是32位MIPS CPU设计实验(单总线CPU-定长指令周期-3级时序),在头歌当中一共需要我们进行六道题的测试,分别为MIPS指令译码器设计,定长指令周期(时序发生FSM设计,时序发…

数据结构05:树与二叉树[C++][哈夫曼树HuffmanTree]

图源:文心一言 考研笔记整理6k字,小白友好、代码可跑,请小伙伴放心食用~~🥝🥝 第1版:查资料、画导图、画配图~🧩🧩 参考用书:王道考研《2024年 数据结构考研复习指导》…

一纸文书之MySQL的回忆录

MySQL要点学习:你可以在简历上说熟悉MySQL 什么是数据库?什么是数据库管理系统?什么是MySQL?什么是SQL?数据库数据库管理系统:SQL:结构化查询语言三者之间的关系 安装MySQL数据库管理系统MySQL常…

数据增强之裁剪、翻转与旋转

文章和代码已经归档至【Github仓库:https://github.com/timerring/dive-into-AI 】或者公众号【AIShareLab】回复 pytorch教程 也可获取。 文章目录 数据增强 Data Augmentation裁剪Croptransforms.CenterCroptransforms.RandomCroptransforms.RandomResizedCroptra…

【雕爷学编程】Arduino动手做(153)---2.4寸TFT液晶触摸屏模块7

37款传感器与执行器的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止这37种的。鉴于本人手头积累了一些传感器和执行器模块,依照实践出真知(一定要动手做)的理念,以学习和交流为目的&am…

TortoiseGit 入门指南02:创建和克隆仓库

图标 本节讲解如何使用 TortoiseGit 创建和克隆仓库。但在此之前,我们先来看下 TortoiseGit 软件的一个特色:图标。 TortoiseGit 会给 工作区 中的文件和文件夹叠加图标(Icon Overlays),图标反应的是这些文件和文件夹…

跳表很难吗?手把手教你如何跳跃它!

文章目录 Ⅰ. 前言Ⅱ. 跳表(skiplist)1、什么是跳表2、跳表的发明历程3、跳表的搜索方式 Ⅲ. skiplist的算法性能分析1、理论准备2、性能分析(了解即可,主要记结论) Ⅳ. skiplist与平衡树、哈希表的比较Ⅴ. skiplist的…

【数字信号处理】线性调频Z(Chirp-Z,CZT)算法详解

CZT变换算法的引入 CZT算法的基本原理 注意:这里所要分析的复频谱点数为 M M M,这也是CZT变换之后的点数。

MySQL之DML和DDL

1、显示所有职工的基本信息: 2、查询所有职工所属部门的部门号,不显示重复的部门号。 3、求出所有职工的人数。 4、列出最高工和最低工资。 5、列出职工的平均工资和总工资。 6、创建一个只有职工号、姓名和参加工作的新表,名为工作日期表。 …

CentOS环境下的MYSQL8安装

MySQL 安装 参考连接:https://www.cnblogs.com/jasonx1an/p/16690866.html 下载 下载网址:https://dev.mysql.com/downloads/mysql/ 卸载 mariadb 查看 mariadb rpm -qa|grep mariadb卸载 mariadb rpm -e mariadb-libs-5.5.68-1.el7.x86_64 --nodeps再…

深度学习调参技巧

一、常用的网络模型训练技巧? 使用更大的 batch size。使用更大的 batch size 可以加快训练的进度。但是对于凸优化问题,收敛速度会随着 batch size 的增加而降低。所以在相同的 epoch 下,使用更大的 batch size 可能会导致验证集的 acc更低…