標籤:ica nts div color ima 索引值 employees 練習 html
安裝一個資料庫樣本——employees
使用工具為Navicat——(ctrl + q: 開啟新查詢時段
ctrl + r: 運行當前視窗內的所有語句)
參考http://www.cnblogs.com/chenyucong/p/5734800.html
該資料庫中有6張關聯,記錄的資料為某一公司9個部門所有員工的薪資(包括離職員工),以下為關係圖。第一張表:departments
記錄的是9個部門的部門編號和部門名稱
第二張表:dept_emp
部門員工資料,員工id和部門id,其即時間和結束時間(註:9999的意思就是仍在職)
統計一下這張表的資料量,331603條記錄
SELECT COUNT(*)
FROM dept_emp
再統計一下員工id(emp_no)的去重數量,300024條記錄
SELECT COUNT(DISTINCT emp_no)FROM dept_emp
差異3W條,為什嗎?有重複出現的員工id,我們嘗試把重複出現員工id篩選出來
SELECT emp_noFROM dept_empGROUP BY emp_noHAVING COUNT(emp_no)>1
好了,現在有了那近3W個有重複值的員工id,但我們仍然不清楚重複的原因,現在需要跟著重複員工id把完整的資訊篩選出來
SELECT * FROM dept_empWHERE emp_no IN (SELECT emp_noFROM dept_empGROUP BY emp_noHAVING COUNT(emp_no)>1)
現在結果很明確,他們是調部門了!所以該表記錄是資料真實含義是每個員工在每個部門所待的時間跨度。
但同時,也存在一個有趣的現象,就是沒有一個員工是調過兩次部門的,證明如下
SELECT * FROM dept_empWHERE emp_no IN (SELECT emp_noFROM dept_empGROUP BY emp_noHAVING COUNT(emp_no)>2)
這個現象我們看看能不能在接下的表中又所發現
第三張表:dept_manger
同第二張表結構差不多,每個部門的每個經理的任職時期,總共就24個人,每個部門至少有過兩個經理。
SELECT COUNT(DISTINCT emp_no) AS manger_sumfrom dept_managerGROUP BY dept_no
第四張表:employees
員工資訊表,emp_no是唯一索引值,
統計結果與表二得出的資料一致。
SELECT COUNT(*) FROM employees;
第五張表:salaries
記錄每個員工每段時期的薪資!
第六張表:title
記錄每個員工每段時期的職位名稱!但請注意,周期與第五張表是不同的,因為在同一職位上你也是會漲工資的嘛
MySQL練習-employees資料庫