MySQL 实例employee表综合查询

目录

表关系图: 

例题:

1.查出至少有一个员工的部门。显示部门编号、部门名称、部门位置、部门人数。

2.列出所有员工的姓名及其直接上级的姓名。

3.列出受雇日期早于直接上级的所有员工的编号、姓名、部门名称。

4.列出部门名称和这些部门的员工信息,同时列出那些没有员工的部门。

5.列出最低薪金大于15000的各种工作及从事此工作的员工人数。

6.列出在销售部工作的员工的姓名,假定不知道销售部的部门编号。

7.列出薪金高于公司平均薪金的所有员工信息,所在部门名称,上级领导,工资等级。

8.列出与庞统从事相同工作的所有员工及部门名称。

9.列出薪金高于在部门30工作的所有员工的薪金的员工姓名和薪金、部门名称。

10.查出年份、利润、年度增长比。


表关系图: 

# 创建表
create table employee
(
empno int NOT NULL AUTO_INCREMENT,
ename varchar(20) NULL,
job varchar(20) NULL,
mgr int NULL,
hiredate date NULL,
sal decimal(10,2) NULL,
comm decimal(10,2) NULL,
deptno int NULL,
primary key (empnos)
)engine=InnoDB;

例题:

1.查出至少有一个员工的部门。显示部门编号、部门名称、部门位置、部门人数。

mysql> SELECT   
    ->     d.deptno,   
    ->     d.dname,   
    ->     d.loc,   
    ->     COUNT(e.empno) AS dept_count  
    -> FROM   
    ->     department d  
    -> JOIN   
    ->     employee e ON d.deptno = e.deptno  
    -> GROUP BY   
    ->     d.deptno, d.dname, d.loc  
    -> HAVING   
    ->     COUNT(e.empno) > 0;
+--------+-----------+--------+------------+
| deptno | dname     | loc    | dept_count |
+--------+-----------+--------+------------+
|     20 | 学工部    | 上海   |          5 |
|     30 | 销售部    | 广州   |          6 |
|     10 | 教研部    | 北京   |          3 |
+--------+-----------+--------+------------+
3 rows in set (0.01 sec)

2.列出所有员工的姓名及其直接上级的姓名。

mysql> SELECT   
    ->     e1.ename AS employee_name,   
    ->     e2.ename AS manager_name  
    -> FROM   
    ->     employee e1  
    -> LEFT JOIN   
    ->     employee e2 ON e1.mgr = e2.empno;
+---------------+--------------+
| employee_name | manager_name |
+---------------+--------------+
| 甘宁          | 庞统         |
| 黛琦丝        | 关羽         |
| 殷天正        | 关羽         |
| 刘备          | 曾阿牛       |
| 谢逊          | 关羽         |
| 关羽          | 曾阿牛       |
| 张飞          | 曾阿牛       |
| 诸葛亮        | 刘备         |
| 曾阿牛        | NULL         |
| 韦一笑        | 关羽         |
| 周泰          | 诸葛亮       |
| 程普          | 关羽         |
| 庞统          | 刘备         |
| 黄盖          | 张飞         |
+---------------+--------------+
14 rows in set (0.01 sec)

3.列出受雇日期早于直接上级的所有员工的编号、姓名、部门名称。

mysql> SELECT   
    ->     e1.empno,   
    ->     e1.ename,   
    ->     d.dname  
    -> FROM   
    ->     employee e1  
    -> JOIN   
    ->     employee e2 ON e1.mgr = e2.empno  
    -> JOIN   
    ->     department d ON e1.deptno = d.deptno  
    -> WHERE   
    ->     e1.hiredate < e2.hiredate;
+-------+-----------+-----------+
| empno | ename     | dname     |
+-------+-----------+-----------+
|  1001 | 甘宁      | 学工部    |
|  1002 | 黛琦丝    | 销售部    |
|  1003 | 殷天正    | 销售部    |
|  1004 | 刘备      | 学工部    |
|  1006 | 关羽      | 销售部    |
|  1007 | 张飞      | 教研部    |
+-------+-----------+-----------+
6 rows in set (0.00 sec)

4.列出部门名称和这些部门的员工信息,同时列出那些没有员工的部门。

mysql> SELECT   
    ->     d.deptno,   
    ->     d.dname,   
    ->     e.empno,   
    ->     e.ename,   
    ->     e.job,   
    ->     e.mgr,   
    ->     e.hiredate,   
    ->     e.sal,   
    ->     e.comm  
    -> FROM   
    ->     department d  
    -> LEFT JOIN   
    ->     employee e ON d.deptno = e.deptno  
    -> ORDER BY   
    ->     d.deptno, e.empno;
+--------+-----------+-------+-----------+-----------+------+------------+----------+----------+
| deptno | dname     | empno | ename     | job       | mgr  | hiredate   | sal      | comm     |
+--------+-----------+-------+-----------+-----------+------+------------+----------+----------+
|     10 | 教研部    |  1007 | 张飞      | 经理      | 1009 | 2001-09-01 | 24500.00 | NULL     |
|     10 | 教研部    |  1009 | 曾阿牛    | 董事长    | NULL | 2001-11-17 | 50000.00 | NULL     |
|     10 | 教研部    |  1014 | 黄盖      | 文员      | 1007 | 2002-01-23 | 13000.00 | NULL     |
|     20 | 学工部    |  1001 | 甘宁      | 文员      | 1013 | 2000-12-17 | 8000.00  | NULL     |
|     20 | 学工部    |  1004 | 刘备      | 经理      | 1009 | 2001-04-02 | 29750.00 | NULL     |
|     20 | 学工部    |  1008 | 诸葛亮    | 分析师    | 1004 | 2007-04-19 | 30000.00 | NULL     |
|     20 | 学工部    |  1011 | 周泰      | 文员      | 1008 | 2007-05-23 | 11000.00 | NULL     |
|     20 | 学工部    |  1013 | 庞统      | 分析师    | 1004 | 2001-12-03 | 30000.00 | NULL     |
|     30 | 销售部    |  1002 | 黛琦丝    | 销售员    | 1006 | 2001-02-20 | 16000.00 | 3000.00  |
|     30 | 销售部    |  1003 | 殷天正    | 销售员    | 1006 | 2001-02-22 | 12500.00 | 5000.00  |
|     30 | 销售部    |  1005 | 谢逊      | 销售员    | 1006 | 2001-09-28 | 12500.00 | 14000.00 |
|     30 | 销售部    |  1006 | 关羽      | 经理      | 1009 | 2001-05-01 | 28500.00 | NULL     |
|     30 | 销售部    |  1010 | 韦一笑    | 销售员    | 1006 | 2001-09-08 | 15000.00 | 0.00     |
|     30 | 销售部    |  1012 | 程普      | 文员      | 1006 | 2001-12-03 | 9500.00  | NULL     |
|     40 | 财务部    |  NULL | NULL      | NULL      | NULL | NULL       | NULL     | NULL     |
+--------+-----------+-------+-----------+-----------+------+------------+----------+----------+
15 rows in set (0.00 sec)

5.列出最低薪金大于15000的各种工作及从事此工作的员工人数。

mysql> SELECT  job,count(*) as 人数 
    —> from employee 
    —> where sal > 15000 or sal+comm > 15000 
    —> group by job;
+-----------+--------+
| job       | 人数   |
+-----------+--------+
| 销售员    |      3 |
| 经理      |      3 |
| 分析师    |      2 |
| 董事长    |      1 |
+-----------+--------+

4 rows in set (0.01 sec)

6.列出在销售部工作的员工的姓名,假定不知道销售部的部门编号。

mysql> SELECT   
    ->     e.ename  
    -> FROM   
    ->     employee e  
    -> JOIN   
    ->     department d ON e.deptno = d.deptno  
    -> WHERE   
    ->     d.dname = '销售部';
+-----------+
| ename     |
+-----------+
| 黛琦丝    |
| 殷天正    |
| 谢逊      |
| 关羽      |
| 韦一笑    |
| 程普      |
+-----------+
6 rows in set (0.00 sec)

7.列出薪金高于公司平均薪金的所有员工信息,所在部门名称,上级领导,工资等级。

mysql> SELECT   
    ->     e.empno,   
    ->     e.ename,   
    ->     d.dname,   
    ->     e.mgr,   
    ->     e.sal,   
    ->     sg.grade  
    -> FROM   
    ->     employee e  
    -> JOIN   
    ->     department d ON e.deptno = d.deptno  
    -> LEFT JOIN   
    ->     salarygrade sg ON e.sal BETWEEN sg.losal AND sg.hisal  
    -> WHERE   
    ->     e.sal > (SELECT avg(sal)+sum(comm)/14 FROM employee)  
    -> ORDER BY   
    ->     e.empno;
+-------+-----------+-----------+------+----------+-------+
| empno | ename     | dname     | mgr  | sal      | grade |
+-------+-----------+-----------+------+----------+-------+
|  1004 | 刘备      | 学工部    | 1009 | 29750.00 |     4 |
|  1006 | 关羽      | 销售部    | 1009 | 28500.00 |     4 |
|  1007 | 张飞      | 教研部    | 1009 | 24500.00 |     4 |
|  1008 | 诸葛亮    | 学工部    | 1004 | 30000.00 |     4 |
|  1009 | 曾阿牛    | 教研部    | NULL | 50000.00 |     5 |
|  1013 | 庞统      | 学工部    | 1004 | 30000.00 |     4 |
+-------+-----------+-----------+------+----------+-------+
6 rows in set (0.02 sec)

8.列出与庞统从事相同工作的所有员工及部门名称。

mysql> SELECT a.ename, b.dname 
    -> FROM employee  a 
    -> JOIN department b ON a.deptno = b.deptno 
    -> WHERE a.job = (SELECT job FROM employee WHERE ename = '庞统');
+-----------+-----------+
| ename     | dname     |
+-----------+-----------+
| 诸葛亮    | 学工部    |
| 庞统      | 学工部    |
+-----------+-----------+
2 rows in set (0.00 sec)

9.列出薪金高于在部门30工作的所有员工的薪金的员工姓名和薪金、部门名称。

mysql> select e.ename,e.sal,d.dname from employee e      
    ->  inner join department d     
    -> on e.deptno = d.deptno  where sal >
    -> (select sum(sal)+sum(comm) from  employee where deptno = 30);
Empty set (0.01 sec)

10.查出年份、利润、年度增长比。

mysql> SELECT current_year.year, current_year.zz,
    -> CASE WHEN previous_year.zz = 0 THEN NULL
    -> 
    -> ELSE CONCAT(ROUND(( (current_year.zz - previous_year.zz) / previous_year.zz )*100 ,2 ),'%')
    -> 
    -> END AS growth_rate
    -> 
    -> FROM
    -> 
    ->          annualprofit current_year
    -> 
    -> LEFT JOIN
    -> 
    ->         annualprofit previous_year ON current_year.year = previous_year.year + 1
    -> 
    -> ORDER BY current_year.year;
+------+---------+-------------+
| year | zz      | growth_rate |
+------+---------+-------------+
| 2010 | 100.00  | NULL        |
| 2011 | 150.00  | 50%         |
| 2012 | 250.00  | 66.67%      |
| 2013 | 800.00  | 220%        |
| 2014 | 1000.00 | 25%         |
+------+---------+-------------+
5 rows in set (0.01 sec)

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

正五边形C语言绘制方法

正五边形C语言绘制方法 平面几何大家都学过&#xff0c;基本的概念就是点、线、面&#xff0c;三角形、矩形、圆形和椭圆形&#xff0c;还有就是多边形。学几何时都强调用圆规直尺三角板作图&#xff0c;学到角度就用到量角尺。那时我对五角星&#xff0c;六角星很感兴趣。后来…

【攻防世界】lottery

弱比较代码审计 本题已提供源码&#xff0c;如果没提供&#xff0c;输入/robots.txt&#xff0c;发现/.git function buy($req){require_registered();require_min_money(2);$money $_SESSION[money];//接受用户原有money$numbers $req[numbers];//接受输入的数字$win_num…

生产者消费者模型之环形队列

引入 以电影院买票为例 去电影院看电影需要先买票&#xff0c;如果买过票了&#xff0c;哪怕我们没有去看电影&#xff0c;在电影票的有效期内&#xff0c;电影院对应的座位就是属于你的。 买票的本质&#xff1a;对资源&#xff08;座位&#xff09;的预订。 信号量 本质…

【VUE】Vue项目打包报告生成:让性能优化触手可及

Vue项目打包报告生成&#xff1a;让性能优化触手可及 Vue.js是一款流行的前端框架&#xff0c;开发者在使用Vue.js构建项目时&#xff0c;生产环境的性能优化尤为重要。为了帮助开发者分析和优化打包出来的资源&#xff0c;生成打包报告是一个不可或缺的步骤。本文将介绍几种在…

光纤收发器的注意事项

光纤收发器有各种不同的类别&#xff0c;而实际使用中最受关注的是根据光纤收发器的不同类别&#xff1a;SC连接器光纤收发器和FC/ST连接器光纤收发器。 当使用光纤收发器连接到不同的设备时&#xff0c;必须小心使用不同的端口。 1.光纤收发器与100Base TX设备&#xff08;交…

RAKsmart:硅谷裸机云多IP服务器性能评测

在云计算领域&#xff0c;裸机云作为一种结合了传统物理服务器与云计算优势的服务模式&#xff0c;近年来备受关注。硅谷裸机云作为业界佼佼者&#xff0c;以其出色的性能和稳定性赢得了众多用户的青睐。今天&#xff0c;我们就来评测一下硅谷裸机云的多IP服务器性能。 首先&am…

JVM基础第二篇

目录 垃圾回收 如何判断对象可以回收 引用计数法 可达性分析算法 定义 哪些对象可以作为GC roots&#xff1f; 四种引用 1.强引用 2.软引用&#xff08;SoftReference&#xff09; 3. 弱引用&#xff08;WeakReference&#xff09; 4. 虚引用&#xff08;PhantomRefe…

OpenHarmony轻量系统开发【6】驱动之ADC按键

摘要&#xff1a;本文简单介绍如何操作ADC去读取电压&#xff0c;并且实现开发板上3个ADC按键检测的功能 适合群体&#xff1a;适用于润和Hi3861开发板&#xff0c;L0轻量系统驱动开发 文中所有代码仓库&#xff1a;https://gitee.com/qidiyun/hihope-3861-smart-home-kit 6…

FL Studio v21.2.3.4004 中文永久版网盘下载(含Key.reg注册表补丁)

软件介绍 FL Studio21水果编曲软件汉化版是一款专业的音乐制作软件&#xff0c;被广泛地应用于电子音乐、hip-hop、流行乐等多种音乐类型的制作。该软件提供了丰富的音频编曲工具和音乐效果器&#xff0c;让用户可以轻松地创作出高品质的音乐作品。同时&#xff0c;这也是一款…

在比特币中,1 sat 是多少美元?

普通人绝对想不到&#xff0c;比特币能在2024年达到这个价值&#xff0c;早知道的话&#xff0c;我当初就是破釜沉舟也得买一个啊。 而在4月19号&#xff0c;也将迎来比特币再次减半。减半并不是说玩家手中的比特币要被突然减去一半&#xff0c;而是在后续的挖矿过程中&#xf…

[Algorithm][双指针][复写零][快乐数][盛水最多的容器][有效三角形的个数]详细解读 + 代码实现

目录 1.复写零1.题目链接2.算法原理讲解3.代码实现 2.快乐数1.题目链接2.算法原理讲解3.代码实现 3.盛水最多的容器1.题目链接2.算法原理讲解3.代码实现 4.有效三角形的个数1.题目链接2.算法原理讲解3.代码实现 1.复写零 1.题目链接 题目链接 2.算法原理讲解 先找到最后一个…

洁净室空气颗粒物检测-激光尘埃粒子计数器如何选型 北京中邦兴业

空气颗粒是通过迫使空气通过颗粒计数器中的空腔来测量的&#xff0c;该计数器使用激光来测量和计数颗粒。这是通过一个称为光散射的过程来实现的。 粒子计数器的部件 在粒子计数器内&#xff0c;你会发现一个激光传感器块。这就是使用光散射原理来确定粒子大小和数量的地方。…

Linux内核与基础命令学习总结

Linux操作系统 Linux操作系统博大精深&#xff0c;其中对线程&#xff0c;IO&#xff0c;文件系统等概念的实现都很有借鉴意义。 ​ 文件系统和VFS 文件系统的inode上面讲过了。VFS主要用于屏蔽底层的不同文件系统&#xff0c;比如接入网络中的nfs文件系统&#xff0c;亦或是w…

51单片机入门_江协科技_29~30_OB记录的自学笔记_DS18B20温度传感器

29. DS18B20温度传感器 29.1. DS18B20介绍 •DS18B20是一种常见的数字温度传感器&#xff0c;其控制命令和数据都是以数字信号的方式输入输出&#xff0c;相比较于模拟温度传感器&#xff0c;具有功能强大、硬件简单、易扩展、抗干扰性强等特点 •测温范围&#xff1a;-55C 到 …

Go 编译构建的一些细节

Go 编译构建的一些细节 发现自己竟然没有怎么认真研究过 go 的编译构建命令。 结论前置 go run 专门用来运行命令源码文件的命令&#xff0c;一般用来运行单个文件go build 主要是用于测试编译。编译某个包或者项目&#xff0c;在当前目录下生成可执行文件go install 编译并…

图形化编程要怎么做

0. 简介 Scratch其实应该算得上最早做图形化编程的工程了。Scratch 是麻省理工学院的“终身幼儿园团队”在 2007 年 [5]发布的一种图形化编程工具&#xff0c;主要面对全球青少年开放&#xff0c;是图形化编程工具当中最广为人知的一种&#xff0c;所有人都可以在软件中创作自…

大模型赋能:爬虫技术的全新革命

大模型加持下的爬虫技术革新&#xff1a;从BS4到提示工程的飞跃 在爬虫技术的演进历程中&#xff0c;内容解析一直是一个核心环节。传统的爬虫技术&#xff0c;如使用BeautifulSoup&#xff08;BS4&#xff09;等工具&#xff0c;需要逐个解析网页内容&#xff0c;通过XPath或C…

【NPS】内网穿透工具之 NPS

一、linux 安装 nps nps-releases&#xff1a;https://github.com/ehang-io/nps/releases 1.1、在 ubuntu下安装对应版本&#xff08;非docker&#xff09; 可以看到如下指令 wget https://ghproxy.com/https://github.com/ehang-io/nps/releases/download/v0.26.10/linux…

网络安全-自学笔记

一、自学网络安全学习的误区和陷阱 1.不要试图先成为一名程序员&#xff08;以编程为基础的学习&#xff09;再开始学习 我在之前的回答中&#xff0c;我都一再强调不要以编程为基础再开始学习网络安全&#xff0c;一般来说&#xff0c;学习编程不但学习周期长&#xff0c;而…

weblogic JSP action的配置

action(如xxx.do)可以在Java文件中通过注解的方式配置,也可以在web.xml中进行配置 在java文件中配置的场合 @WebServlet(xxxx.do) 并实现支持的方法:doGet或doPost等 或者 @WebServlet(xxxx.do) 并实现service方法 所有method的处理方法都会先经过service方法 在web.x…