1.下載與安裝html
下載地址:https://github.com/datacharmer/test_dbgit
安裝博客:https://blog.csdn.net/appleyuchi/article/details/79439387github
注意:這裏使用單下劃線表示主鍵,使用雙下劃線表示便是主鍵也是外鍵。可是標準狀況是使用虛線表示外鍵的,這裏要注意一下數據庫
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) );
1.部門員工表app
咱們查看部門員工表的數據量ide
select count(*) from dept_emp;spa
使用去重操做以後:.net
select count(distinct emp_no) from dept_emp;設計
咱們發現有不少數據重複了。那是什麼緣由形成的呢?code
首先咱們篩選出這些重複的數據信息:
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 表)
參考博客: