MySQL 实例employee表综合查询

2024-04-16 15:36

本文主要是介绍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)

这篇关于MySQL 实例employee表综合查询的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/909191

相关文章

MySQL更新某个字段拼接固定字符串的实现

《MySQL更新某个字段拼接固定字符串的实现》在MySQL中,我们经常需要对数据库中的某个字段进行更新操作,本文就来介绍一下MySQL更新某个字段拼接固定字符串的实现,感兴趣的可以了解一下... 目录1. 查看字段当前值2. 更新字段拼接固定字符串3. 验证更新结果mysql更新某个字段拼接固定字符串 -

python连接本地SQL server详细图文教程

《python连接本地SQLserver详细图文教程》在数据分析领域,经常需要从数据库中获取数据进行分析和处理,下面:本文主要介绍python连接本地SQLserver的相关资料,文中通过代码... 目录一.设置本地账号1.新建用户2.开启双重验证3,开启TCP/IP本地服务二js.python连接实例1.

Spring Boot项目中结合MyBatis实现MySQL的自动主从切换功能

《SpringBoot项目中结合MyBatis实现MySQL的自动主从切换功能》:本文主要介绍SpringBoot项目中结合MyBatis实现MySQL的自动主从切换功能,本文分步骤给大家介绍的... 目录原理解析1. mysql主从复制(Master-Slave Replication)2. 读写分离3.

Mybatis 传参与排序模糊查询功能实现

《Mybatis传参与排序模糊查询功能实现》:本文主要介绍Mybatis传参与排序模糊查询功能实现,本文通过实例代码给大家介绍的非常详细,感兴趣的朋友跟随小编一起看看吧... 目录一、#{ }和${ }传参的区别二、排序三、like查询四、数据库连接池五、mysql 开发企业规范一、#{ }和${ }传参的

Ubuntu中远程连接Mysql数据库的详细图文教程

《Ubuntu中远程连接Mysql数据库的详细图文教程》Ubuntu是一个以桌面应用为主的Linux发行版操作系统,这篇文章主要为大家详细介绍了Ubuntu中远程连接Mysql数据库的详细图文教程,有... 目录1、版本2、检查有没有mysql2.1 查询是否安装了Mysql包2.2 查看Mysql版本2.

基于SpringBoot+Mybatis实现Mysql分表

《基于SpringBoot+Mybatis实现Mysql分表》这篇文章主要为大家详细介绍了基于SpringBoot+Mybatis实现Mysql分表的相关知识,文中的示例代码讲解详细,感兴趣的小伙伴可... 目录基本思路定义注解创建ThreadLocal创建拦截器业务处理基本思路1.根据创建时间字段按年进

Python3.6连接MySQL的详细步骤

《Python3.6连接MySQL的详细步骤》在现代Web开发和数据处理中,Python与数据库的交互是必不可少的一部分,MySQL作为最流行的开源关系型数据库管理系统之一,与Python的结合可以实... 目录环境准备安装python 3.6安装mysql安装pymysql库连接到MySQL建立连接执行S

MySQL双主搭建+keepalived高可用的实现

《MySQL双主搭建+keepalived高可用的实现》本文主要介绍了MySQL双主搭建+keepalived高可用的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,... 目录一、测试环境准备二、主从搭建1.创建复制用户2.创建复制关系3.开启复制,确认复制是否成功4.同

MyBatis 动态 SQL 优化之标签的实战与技巧(常见用法)

《MyBatis动态SQL优化之标签的实战与技巧(常见用法)》本文通过详细的示例和实际应用场景,介绍了如何有效利用这些标签来优化MyBatis配置,提升开发效率,确保SQL的高效执行和安全性,感... 目录动态SQL详解一、动态SQL的核心概念1.1 什么是动态SQL?1.2 动态SQL的优点1.3 动态S

Mysql表的简单操作(基本技能)

《Mysql表的简单操作(基本技能)》在数据库中,表的操作主要包括表的创建、查看、修改、删除等,了解如何操作这些表是数据库管理和开发的基本技能,本文给大家介绍Mysql表的简单操作,感兴趣的朋友一起看... 目录3.1 创建表 3.2 查看表结构3.3 修改表3.4 实践案例:修改表在数据库中,表的操作主要