關於員工與部門查詢的SQL筆試題

DEPARTMENTS:
DEPARTMENT_ID(primary key),
DEPARTMENT_NAME,
LOCATION

//新建一張表
create table DEPARTMENTS
(
DEPARTMENT_ID int Primary key,
DEPARTMENT_NAME varchar(255)
)

EMPLOYEES:
EMPLOYEE_ID(primary key),
EMPLOYEE_NAME,
EMPLOYEE_JOB,
MANAGER,
SALARY,
DEPARTMENT_ID
//新建一張表
create table EMPLOYEES
(
EMPLOYEES_ID int Primary key,
EMPLOYEES_NAME varchar(255),
EMPLOYEES_JOB varchar(255),
MANAGER varchar(255),
SALARY money ,
DEPARTMENT_ID int
)

  1. 列出EMPLOYEES表中各部門的部門號,最高工資,最低工資

    select max(SALARY) as 最高工資,min(SALARY) as 最低工資,DEPARTMENT_ID from EMPLOYEES group by DEPARTMENT_ID;


  2. 列出EMPLOYEES表中各部門EMPLOYEE_JOB爲'CLERK'的員工的最低工資,最高工資

    select max(SALARY) as 最高工資,min(SALARY) as 最低工資,DEPARTMENT_ID as 部門號 from EMPLOYEES where EMPLOYEE_JOB = 'CLERK' group by DEPARTMENT_ID;


  3. 對於EMPLOYEES中最低工資小於1000的部門,列出EMPLOYEE_JOB爲'CLERK'的員工的部門號,最低工資,最高工資

    select max(SALARY) as 最高工資,min(SALARY) as 最低工資,DEPARTMENT_ID as 部門號 from EMPLOYEES as b

    where EMPLOYEE_JOB ='CLERK' and 1000>(select min(SALARY) from EMPLOYEES as a where a.DEPARTMENT_ID = b.DEPARTMENT_ID) group by b.DEPARTMENT_ID


  4. 根據部門號由高而低,工資有低而高列出每個員工的姓名,部門號,工資

    select DEPARTMENT_ID as 部門號,EMPLOYEE_NAME as 姓名,SALARY as 工資 from EMPLOYEES order by DEPARTMENT_ID desc,SALARY asc


  5. 列出'張三'所在部門中每個員工的姓名與部門號

    select EMPLOYEE_NAME,DEPARTMENT_ID from EMPLOYEES where DEPARTMENT_ID = (select DEPARTMENT_ID from EMPLOYEES where EMPLOYEE_NAME = '張三')


  6. 列出每個員工的姓名,工作,部門號,部門名

    select EMPLOYEE_NAME,EMPLOYEE_JOB,EMPLOYEES.DEPARTMENT_ID,DEPARTMENTS.DEPARTMENT_NAME from EMPLOYEES,DEPARTMENTS where EMPLOYEES.DEPARTMENT_ID = DEPARTMENTS.DEPARTMENT_ID


  7. 列出EMPLOYEES中工作爲'CLERK'的員工的姓名,工作,部門號,部門名

    select EMPLOYEE_NAME,EMPLOYEE_JOB,DEPARTMENTS.DEPARTMENT_ID,DEPARTMENT_NAME from EMPLOYEES,DEPARTMENTS where DEPARTMENTS.DEPARTMENT_ID = EMPLOYEES.DEPARTMENT_ID and DEPARTMENT_JOB = 'CLERK'


  8. 對於EMPLOYEES中有管理者的員工,列出姓名,管理者姓名(管理者外鍵爲MANAGER)

    select a.EMPLOYEE_NAME as 姓名,b.EMPLOYEE_NAME as 管理者 from EMPLOYEES as a,EMPLOYEES as b where a.MANAGER is not null and a.MANAGER = b.EMPLOYEE_ID


  9. 對於DEPARTMENTS表中,列出所有部門名,部門號,同時列出各部門工作爲'CLERK'的員工名與工作

    select DEPARTMENT_NAME as 部門名,DEPARTMENTS.DEPARTMENT_ID as 部門號,EMPLOYEE_NAME as 員工名,EMPLOYEE_JOB as 工作 from DEPARTMENTS,EMPLOYEES
    where DEPARTMENTS.DEPARTMENT_ID *= EMPLOYEES.DEPARTMENT_ID and EMPLOYEE_JOB = 'CLERK'


  10. 對於工資高於本部門平均水平的員工,列出部門號,姓名,工資,按部門號排序

    select a.DEPARTMENT_ID as 部門號,a.EMPLOYEE_NAME as 姓名,a.SALARY as 工資 from EMPLOYEES as a
    where a.SALARY>(select avg(SALARY) from EMPLOYEES as b where a.DEPARTMENT_ID = b.DEPARTMENT_ID) order by a.DEPARTMENT_ID


  11. 對於EMPLOYEES,列出各個部門中平均工資高於本部門平均水平的員工數和部門號,按部門號排序

    select count(a.SALARY) as 員工數,a.DEPARTMENT_ID as 部門號 from EMPLOYEES as a
    where a.SALARY>(select avg(SALARY) from EMPLOYEES as b where a.DEPARTMENT_ID = b.DEPARTMENT_ID) group by a.DEPARTMENT_ID order by a.DEPARTMENT_ID


  12. 對於EMPLOYEES中工資高於本部門平均水平,人數多與1人的,列出部門號,人數,按部門號排序

    select count(a.EMPLOYEE_ID) as 員工數,a.DEPARTMENT_ID as 部門號,avg(SALARY) as 平均工資 from EMPLOYEES as a
    where (select count(c.EMPLOYEE_ID) from EMPLOYEES as c where c.DEPARTMENT_ID = a.DEPARTMENT_ID and c.SALARY>(select avg(SALARY) from EMPLOYEES as b where c.DEPARTMENT_ID = b.DEPARTMENT_ID))>1
    group by a.DEPARTMENT_ID order by a.DEPARTMENT_ID


  13. 對於EMPLOYEES中低於自己工資至少5人的員工,列出其部門號,姓名,工資,以及工資少於自己的人數

    select a.DEPARTMENT_ID,a.EMPLOYEE_NAME,a.SALARY,(select count(b.EMPLOYEE_NAME) from EMPLOYEES as b where b.SALARY < a.SALARY) as 人數 from EMPLOYEES as a
    where (select count(b.EMPLOYEE_NAME) from EMPLOYEES as b where b.SALARY<a.SALARY)>5




發佈了53 篇原創文章 · 獲贊 14 · 訪問量 5萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章