有難度 可是不要放棄 使用hr帳戶spa
表結構以下:hr.employeescode
hr.departmentsblog
hr.regionsit
表中數據太多 就不貼了io
用SQL完成如下問題列表:ast
1. 讓SELECT TO_CHAR(SALARY,'L99,999.99') FROM HR.EMPLOYEES WHERE ROWNUM < 5 輸出結果的貨幣單位是¥和$。class
2. 列出前五位每一個員工的名字,工資、漲薪後的的工資(漲幅爲8%),以「元」爲單位進行四捨五入。im
3. 找出誰是最高領導,將名字按大寫形式顯示。d3
4. 找出First_Name 爲David,Last_Name爲Austin 的直接領導名字。數據
5. First_Name 爲Alexander,Last_Name爲Hunold領導誰。(誰向David 報告)。
6. 哪些員工的工資高於他直接上司的工資,列出員工的名字和工資,上司的名字和工資。
7. 哪些員工和Chen(LAST_NAME)同部門。
8. 哪些員工跟De Haan(LAST_NAME)作同樣職位。
9. 哪些員工跟Hall(LAST_NAME)不在同一個部門。
10. 哪些員工跟William(FIRST_NAME)、Smith(LAST_NAME)作不同的職位。
11. 顯示有提成的員工的信息:名字、提成、所在部門名稱、所在地區的名稱。
12. 顯示Executive部門有哪些職位。
13. 整個公司中,最高工資和最低工資相差多少。
14. 提成大於0 的人數。
15. 顯示整個公司的最高工資、最低工資、工資總和、平均工資保留到整數位。
16. 整個公司有多少個領導。
17. 列出在同一部門入職日期晚但工資高於其餘同事的員工:名字、工資、入職日期。
答案以下:
1 --1. 讓SELECT TO_CHAR(SALARY,'L99,999.99') FROM HR.EMPLOYEES WHERE ROWNUM < 5 輸出結果的貨幣單位是¥和$。 2 SELECT TO_CHAR(SALARY,'L99,999.99') FROM HR.EMPLOYEES WHERE ROWNUM < 5; 3 SELECT TO_CHAR(SALARY,'$99,999.99') FROM HR.EMPLOYEES WHERE ROWNUM < 5; 4 5 --2. 列出前五位每一個員工的名字,工資、漲薪後的的工資(漲幅爲8%),以「元」爲單位進行四捨五入。 6 SELECT * FROM EMPLOYEES e WHERE ROWNUM<5; 7 SELECT e.FIRST_NAME,e.LAST_NAME,e.SALARY,ROUND(e.SALARY*1.08) FROM EMPLOYEES e WHERE ROWNUM<=5 ORDER BY e.SALARY DESC; 8 9 --3. 找出誰是最高領導,將名字按大寫形式顯示。 10 SELECT * FROM EMPLOYEES e WHERE e.MANAGER_ID IS NULL; 11 SELECT upper(e.FIRST_NAME||' '||e.LAST_NAME) FROM EMPLOYEES e WHERE e.MANAGER_ID IS NULL; 12 --4. 找出First_Name 爲David,Last_Name爲Austin 的直接領導名字。 13 -- 14 SELECT * FROM EMPLOYEES e WHERE e.FIRST_NAME='David' AND e.LAST_NAME='Austin'; 15 16 SELECT EMPLOYEE_ID FROM EMPLOYEES WHERE EMPLOYEE_ID=(SELECT e.MANAGER_ID FROM EMPLOYEES e WHERE e.FIRST_NAME='David' AND e.LAST_NAME='Austin'); 17 18 --5. First_Name 爲Alexander,Last_Name爲Hunold領導誰。(誰向David 報告)。 19 -- 20 SELECT * FROM EMPLOYEES e WHERE e.MANAGER_ID = (SELECT EMPLOYEE_ID FROM EMPLOYEES WHERE EMPLOYEE_ID=(SELECT e.MANAGER_ID FROM EMPLOYEES e WHERE e.FIRST_NAME='David' AND e.LAST_NAME='Austin')); 21 22 --6. 哪些員工的工資高於他直接上司的工資,列出員工的名字和工資,上司的名字和工資。 23 -- 24 SELECT e.FIRST_NAME,e.SALARY,(SELECT ee.FIRST_NAME FROM EMPLOYEES ee WHERE ee.EMPLOYEE_ID=e.MANAGER_ID AND nvl(e.SALARY,0)>nvl(ee.SALARY,0) ) FROM EMPLOYEES e; 25 26 SELECT e.FIRST_NAME,e.SALARY,ee.FIRST_NAME,ee.SALARY FROM EMPLOYEES e,EMPLOYEES ee WHERE e.MANAGER_ID=e.EMPLOYEE_ID AND e.SALARY>ee.SALARY; 27 28 29 --7. 哪些員工和Chen(LAST_NAME)同部門。 30 -- 31 SELECT e.DEPARTMENT_ID FROM EMPLOYEES e WHERE e.LAST_NAME='Chen'; 32 SELECT * FROM EMPLOYEES ee WHERE ee.DEPARTMENT_ID IN (SELECT e.DEPARTMENT_ID FROM EMPLOYEES e WHERE e.LAST_NAME='Chen'); 33 34 --8. 哪些員工跟De Haan(LAST_NAME)作同樣職位。 35 -- 36 SELECT * FROM EMPLOYEES ee WHERE ee.JOB_ID IN (SELECT e.JOB_ID FROM EMPLOYEES e WHERE e.LAST_NAME='De Haan'); 37 38 --9. 哪些員工跟Hall(LAST_NAME)不在同一個部門。 39 -- 40 SELECT * FROM EMPLOYEES ee WHERE ee.DEPARTMENT_ID NOT IN (SELECT e.DEPARTMENT_ID FROM EMPLOYEES e WHERE e.LAST_NAME='Hall'); 41 42 --10. 哪些員工跟William(FIRST_NAME)、Smith(LAST_NAME)作不同的職位。 43 -- 44 SELECT * FROM EMPLOYEES ee WHERE ee.JOB_ID NOT IN (SELECT e.JOB_ID FROM EMPLOYEES e WHERE e.LAST_NAME='Smith' AND e.FIRST_NAME='William'); 45 46 --11. 顯示有提成的員工的信息:名字、提成、所在部門名稱、所在地區的名稱。 47 -- 48 SELECT e.FIRST_NAME,e.COMMISSION_PCT,d.DEPARTMENT_NAME,l.CITY,l.STATE_PROVINCE FROM EMPLOYEES e,DEPARTMENTS d,LOCATIONS l WHERE e.COMMISSION_PCT IS NOT NULL AND e.DEPARTMENT_ID=d.DEPARTMENT_ID and d.LOCATION_ID=l.LOCATION_ID; 49 50 --12. 顯示Executive部門有哪些職位。 51 -- 52 SELECT d.DEPARTMENT_ID FROM DEPARTMENTS d WHERE d.DEPARTMENT_NAME='Executive'; 53 54 SELECT DISTINCT e.JOB_ID FROM EMPLOYEES e WHERE e.DEPARTMENT_ID IN (SELECT d.DEPARTMENT_ID FROM DEPARTMENTS d WHERE d.DEPARTMENT_NAME='Executive'); 55 56 --13. 整個公司中,最高工資和最低工資相差多少。 57 -- 58 SELECT MAX(e.SALARY)-MIN(e.SALARY),MAX(e.SALARY),MIN(e.SALARY) FROM EMPLOYEES e; 59 60 --14. 提成大於0 的人數。 61 -- 62 SELECT COUNT(1) FROM EMPLOYEES e WHERE e.COMMISSION_PCT >0; 63 --15. 顯示整個公司的最高工資、最低工資、工資總和、平均工資保留到整數位。 64 -- 65 SELECT MAX(e.SALARY),MIN(e.SALARY),SUM(e.SALARY), ROUND(AVG(e.SALARY)) FROM EMPLOYEES e; 66 --16. 整個公司有多少個領導。 67 -- 68 SELECT count(1) FROM DEPARTMENTS d WHERE d.MANAGER_ID is not null; 69 --17. 列出在同一部門入職日期晚但工資高於其餘同事的員工:名字、工資、入職日期。 70 SELECT e.FIRST_NAME FROM EMPLOYEES e WHERE e.HIRE_DATE>(SELECT ee.HIRE_DATE FROM EMPLOYEES ee where ee.DEPARTMENT_ID=e.DEPARTMENT_ID);
時間久遠 就不提供描述信息了 僅供參考 原做者的鏈接在相關文章能夠獲取到