mysql练习数据库_MySQL练习-employees数据库(一)

本文通过分析MySQL中的employees数据库,探讨了departments、dept_emp、dept_manager、employees和salaries等表的数据结构和关系。重点研究了dept_emp表中员工id的重复情况,揭示了员工调岗的历史记录,并发现了没有员工在同一时期内调整过两次部门的现象。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

32b9333e29bfd381014af94733d91ddb.png

第一张表:departments

记录的是9个部门的部门编号和部门名称

54d3626f91798de18dd60d56e31e2b1b.png

第二张表:dept_emp

部门员工数据,员工id和部门id,其实时间和结束时间(注:9999的意思就是仍在职)

8b6c807afdb91dc0a9289ac11d01f0ba.png

统计一下这张表的数据量,331603条记录

SELECT COUNT(*)

FROM dept_emp

da2e66d5bd5bab32e0e485fe6a2c95ad.png

再统计一下员工id(emp_no)的去重数量,300024条记录

SELECT COUNT(DISTINCTemp_no)FROM dept_emp

4d716de098391ab17a7776b0355ca350.png

差异3W条,为什么?有重复出现的员工id,我们尝试把重复出现员工id筛选出来

SELECTemp_noFROMdept_empGROUP BYemp_noHAVING COUNT(emp_no)>1

ae2f33982b231e1a7ad134741fd19eff.png

好了,现在有了那近3W个有重复值的员工id,但我们仍然不清楚重复的原因,现在需要跟着重复员工id把完整的信息筛选出来

SELECT *

FROMdept_empWHERE emp_no IN (SELECTemp_noFROMdept_empGROUP BYemp_noHAVING COUNT(emp_no)>1)

66e9697400d60d3dd05a24568f49df91.png

现在结果很明确,他们是调部门了!所以该表记录是数据真实含义是每个员工在每个部门所待的时间跨度。

但同时,也存在一个有趣的现象,就是没有一个员工是调过两次部门的,证明如下

SELECT *

FROMdept_empWHERE emp_no IN (SELECTemp_noFROMdept_empGROUP BYemp_noHAVING COUNT(emp_no)>2)

8d5b4e47ec457d32498ee8b5061a03d9.png

这个现象我们看看能不能在接下的表中又所发现

第三张表:dept_manger

同第二张表结构差不多,每个部门的每个经理的任职时期,总共就24个人,每个部门至少有过两个经理。

SELECT COUNT(DISTINCT emp_no) ASmanger_sumfromdept_managerGROUP BY dept_no

36e616c1d2c49338fe1327b54c5c17c2.png

第四张表:employees

员工信息表,emp_no是唯一键值,

20bbdb1fa40f5c53f9ecdeb9904c7601.png

统计结果与表二得出的数据一致。

SELECT COUNT(*)FROM employees;

11326dda00df1e5d4ec5256c3f0d52ef.png

第五张表:salaries

记录每个员工每段时期的薪资!

ab0e63411c8a7bab941f1ed6a61241f0.png

第六张表:title

记录每个员工每段时期的职位名称!但请注意,周期与第五张表是不同的,因为在同一职位上你也是会涨工资的嘛

f276d0e8ac2292243da0ba827d72ceaa.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值