MySQL官網示例數據庫emploees分析使用


1.下載與安裝

下載地址:https://github.com/datacharmer/test_db

安裝博客:https://blog.csdn.net/appleyuchi/article/details/79439387

 

2.ER 

 

 

 

 

注意:這里使用單下划線表示主鍵,使用雙下划線表示即是主鍵也是外鍵。但是標准情況是使用虛線表示外鍵的,這里要注意一下

3.建表語句 

 

CREATE TABLE employees (

    emp_no      INT             NOT NULL,

    birth_date  DATE            NOT NULL,

    first_name  VARCHAR(14)     NOT NULL,

    last_name   VARCHAR(16)     NOT NULL,

    gender      ENUM ('M','F')  NOT NULL,    

    hire_date   DATE            NOT NULL,

    PRIMARY KEY (emp_no)

);

 

CREATE TABLE departments (

    dept_no     CHAR(4)         NOT NULL,

    dept_name   VARCHAR(40)     NOT NULL,

    PRIMARY KEY (dept_no),

    UNIQUE  KEY (dept_name)

);

 

CREATE TABLE dept_manager (

   dept_no      CHAR(4)         NOT NULL,

   emp_no       INT             NOT NULL,

   from_date    DATE            NOT NULL,

   to_date      DATE            NOT NULL,

   KEY         (emp_no),

   KEY         (dept_no),

   FOREIGN KEY (emp_no)  REFERENCES employees (emp_no)    ON DELETE CASCADE,

   FOREIGN KEY (dept_no) REFERENCES departments (dept_no) ON DELETE CASCADE,

   PRIMARY KEY (emp_no,dept_no)

); 

 

CREATE TABLE dept_emp (

    emp_no      INT             NOT NULL,

    dept_no     CHAR(4)         NOT NULL,

    from_date   DATE            NOT NULL,

    to_date     DATE            NOT NULL,

    KEY         (emp_no),

    KEY         (dept_no),

    FOREIGN KEY (emp_no)  REFERENCES employees   (emp_no)  ON DELETE CASCADE,

    FOREIGN KEY (dept_no) REFERENCES departments (dept_no) ON DELETE CASCADE,

    PRIMARY KEY (emp_no,dept_no)

);

 

CREATE TABLE titles (

    emp_no      INT             NOT NULL,

    title       VARCHAR(50)     NOT NULL,

    from_date   DATE            NOT NULL,

    to_date     DATE,

    KEY         (emp_no),

    FOREIGN KEY (emp_no) REFERENCES employees (emp_no) ON DELETE CASCADE,

    PRIMARY KEY (emp_no,title, from_date)

); 

 

CREATE TABLE salaries (

    emp_no      INT             NOT NULL,

    salary      INT             NOT NULL,

    from_date   DATE            NOT NULL,

    to_date     DATE            NOT NULL,

    KEY         (emp_no),

    FOREIGN KEY (emp_no) REFERENCES employees (emp_no) ON DELETE CASCADE,

    PRIMARY KEY (emp_no, from_date)

); 
View Code

 

熟悉數據庫

1.部門員工表

 

我們查看部門員工表的數據量

select count(*) from dept_emp;

 

 

 

使用去重操作之后:

select count(distinct emp_no) from dept_emp;

 

 

 

我們發現有很多數據重復了。那是什么原因造成的呢?

 

首先我們篩選出這些重復的數據信息:

select * 

from dept_emp

where emp_no in (select emp_no

from dept_emp 

    group by emp_no

    having count(emp_no)>1

);

 

 

我們可以發現同一個員工有在不同的部門工作的經歷,說明了有331603-300024=31579名員工有調職的經歷

 

2.薪資表

  

我們可以看出這里工資記錄是按照為單位進行記錄的。

 

通過這個表的數據來查詢資歷最高的員工:

 

select max(a.pnum) max_old_year

from (

select emp_no  id,count(emp_no)  pnum

from salaries

group by emp_no

) a;

 

可知該公司干的最久的員工干了18

 

 

 

 

 

問題設計:

查找該公司資歷最老的員工的個人全部數據(salaries表和 employees 表) 

 

參考博客:

http://www.cnblogs.com/stream886/p/6254630.html

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM