1 表結構: 2 create database MyCompany 3 go 4 use MyCompany 5 go 6 create table Departments 7 ( 8 Department_ID int identity(1,1) primary key, 9 Department_Name nvarchar(50), 10 ) 11 go 12 create table Employees 13 ( 14 Employee_Id int identity(1,1) primary key, 15 Employee_Name nvarchar(50), 16 Employee_Job nvarchar(50), 17 Salary money, 18 Department_Id int foreign key references Departments(Department_ID) 19 ) 20 Go 21 22 --------------------------------------------插入數據---------------------------------------------------------------------------------- 23 ----------------------------------部門表------------------------------------------------------------------- 24 SET IDENTITY_INSERT departments ON 25 insert departments(Department_ID,Department_Name) values( 1 , N'財務部' ) 26 insert departments(Department_ID,Department_Name) values( 2 , N'行政部' ) 27 insert departments(Department_ID,Department_Name) values( 3 , N'開發部' ) 28 insert departments(Department_ID,Department_Name) values( 4 , N'市場部' ) 29 SET IDENTITY_INSERT departments OFF 30 ------------------------=============================員工表================================================================================================ 31 SET IDENTITY_INSERT employees ON insert employees(Employee_Id,Employee_Name,Employee_Job,Salary,Department_Id) values( 1 , N'曹操' , N'組長' , 20000.00 , 1 ) 32 insert employees(Employee_Id,Employee_Name,Employee_Job,Salary,Department_Id) values( 2 , N'劉備' , N'經理' , 30000.00 , 3 ) 33 insert employees(Employee_Id,Employee_Name,Employee_Job,Salary,Department_Id) values( 3 , N'諸葛亮' , N'CEO' , 10000.00 , 2 ) 34 insert employees(Employee_Id,Employee_Name,Employee_Job,Salary,Department_Id) values( 4 , N'黃月英' , N'職員' , 5000.00 , 1 ) 35 insert employees(Employee_Id,Employee_Name,Employee_Job,Salary,Department_Id) values( 5 , N'關羽' , N'職員' , 8000.00 , 3 ) 36 insert employees(Employee_Id,Employee_Name,Employee_Job,Salary,Department_Id) values( 6 , N'張飛' , N'職員' , 8000.00 , 3 ) 37 insert employees(Employee_Id,Employee_Name,Employee_Job,Salary,Department_Id) values( 7 , N'趙雲' , N'職員' , 7000.00 , 3 ) 38 insert employees(Employee_Id,Employee_Name,Employee_Job,Salary,Department_Id) values( 8 , N'馬謖' , N'職員' , 4000.00 , 3 ) 39 insert employees(Employee_Id,Employee_Name,Employee_Job,Salary,Department_Id) values( 9 , N'宋江' , N'職員' , 13000.00 , 3 ) 40 insert employees(Employee_Id,Employee_Name,Employee_Job,Salary,Department_Id) values( 10 , N'林沖' , N'職員' , 7600.00 , 3 ) 41 insert employees(Employee_Id,Employee_Name,Employee_Job,Salary,Department_Id) values( 11 , N'魯智深' , N'職員' , 8000.00 , 2 ) 42 insert employees(Employee_Id,Employee_Name,Employee_Job,Salary,Department_Id) values( 12 , N'李逵' , N'職員' , 820.00 , 1 ) 43 insert employees(Employee_Id,Employee_Name,Employee_Job,Salary,Department_Id) values( 13 , N'吳用' , N'職員' , 8300.00 , 3 ) 44 insert employees(Employee_Id,Employee_Name,Employee_Job,Salary,Department_Id) values( 14 , N'張順' , N'職員' , 6200.00 , 3 ) 45 insert employees(Employee_Id,Employee_Name,Employee_Job,Salary,Department_Id) values( 15 , N'時遷' , N'職員' , 600.00 , 2 ) 46 insert employees(Employee_Id,Employee_Name,Employee_Job,Salary,Department_Id) values( 16 , N'石秀' , N'職員' , 1900.00 , 1 ) 47 insert employees(Employee_Id,Employee_Name,Employee_Job,Salary,Department_Id) values( 17 , N'孫悟空' , N'職員' , 8000.00 , 1 ) 48 insert employees(Employee_Id,Employee_Name,Employee_Job,Salary,Department_Id) values( 18 , N'唐僧' , N'職員' , 17000.00 , 3 ) 49 insert employees(Employee_Id,Employee_Name,Employee_Job,Salary,Department_Id) values( 19 , N'諸葛亮' , N'職員' , 10000.00 , 2 ) 50 insert employees(Employee_Id,Employee_Name,Employee_Job,Salary,Department_Id) values( 20 , N'黃月英' , N'職員' , 5000.00 , 1 ) 51 insert employees(Employee_Id,Employee_Name,Employee_Job,Salary,Department_Id) values( 21 , N'關羽' , N'職員' , 8000.00 , 3 ) 52 insert employees(Employee_Id,Employee_Name,Employee_Job,Salary,Department_Id) values( 22 , N'張飛' , N'職員' , 8000.00 , 3 ) 53 insert employees(Employee_Id,Employee_Name,Employee_Job,Salary,Department_Id) values( 23 , N'趙雲' , N'職員' , 7000.00 , 3 ) 54 insert employees(Employee_Id,Employee_Name,Employee_Job,Salary,Department_Id) values( 24 , N'馬謖' , N'職員' , 4000.00 , 3 ) 55 insert employees(Employee_Id,Employee_Name,Employee_Job,Salary,Department_Id) values( 25 , N'宋江' , N'職員' , 13000.00 , 3 ) 56 insert employees(Employee_Id,Employee_Name,Employee_Job,Salary,Department_Id) values( 26 , N'林沖' , N'職員' , 7600.00 , 3 ) 57 insert employees(Employee_Id,Employee_Name,Employee_Job,Salary,Department_Id) values( 27 , N'魯智深' , N'職員' , 8000.00 , 2 ) 58 insert employees(Employee_Id,Employee_Name,Employee_Job,Salary,Department_Id) values( 28 , N'李逵' , N'職員' , 820.00 , 1 ) 59 insert employees(Employee_Id,Employee_Name,Employee_Job,Salary,Department_Id) values( 29 , N'吳用' , N'職員' , 8300.00 , 3 ) 60 insert employees(Employee_Id,Employee_Name,Employee_Job,Salary,Department_Id) values( 30 , N'張順' , N'職員' , 6200.00 , 3 ) 61 insert employees(Employee_Id,Employee_Name,Employee_Job,Salary,Department_Id) values( 31 , N'時遷' , N'職員' , 600.00 , 2 ) 62 insert employees(Employee_Id,Employee_Name,Employee_Job,Salary,Department_Id) values( 32 , N'石秀' , N'職員' , 1900.00 , 1 ) 63 64 SET IDENTITY_INSERT employees OFF
上面是建立表和數據庫的代碼數據庫
use MyCompanyTest go select * from dbo.Departments select * from Employees --1.列出EMPLOYEES表中各部門的:部門編號,最高工資, select e.department_Id 部門編號, MAX(e.Salary) 最高工資,MIN(e.salary)最低工資 from Employees e group by e.department_Id --2.列出EMPLOYEES表中各部門的:部門編號、部門名稱、最高工資、最低工資 select 部門編號, 最高工資,最低工資 ,d.Department_Name from (select e.Department_ID 部門編號, max(e.Salary)最高工資,min(e.Salary)最低工資 from Employees e group by e.Department_Id )as t join Departments d on t.部門編號=d.Department_ID --3.列出EMPLOYEES表中各部門中'職員'(Employee_job爲'職員')的:最低工資,最高工資和部門Id select min(Salary)最低工資,MAX(Salary) 最高工資,Department_Id 部門Id from Employees where Employee_Job='職員' group by Department_Id --4.對於EMPLOYEES中最低工資小於1000的部門,列出EMPLOYEE_JOB爲'職員'的:部門編號,最低工資,最高工資 select * from( select Department_Id,MIN(e.Salary)最低工資,MAX(e.Salary)最高工資 from Employees e where e.Employee_Job='職員' group by e.Department_Id) as t join Departments d on d.Department_ID =t.Department_Id where t.最低工資<1000 --5.根據部門編號由高到低,工資由低到高,列出每一個員工的姓名,部門號,工資 select * from Employees order by Department_Id desc , Salary asc --6.列出'吳用'所在部門中每一個員工的姓名與部門號 select * from Employees where Department_Id in ( select Department_Id from Employees where Employee_Name='吳用' ) --7.列出每一個員工的姓名,頭銜,部門號,部門名 select e.Employee_Name,e.Employee_Job,d.Department_ID,d.Department_Name from Employees e join Departments d on e.Department_Id=d.Department_ID --8.列出EMPLOYEES中頭銜爲'職員'的員工的姓名,工做,部門號,部門名 select * from Employees e join Departments d on e.Department_Id=d.Department_ID where e.Employee_Job='職員' --9.對於DEPARTMENTS表中,列出全部(說明是左聯):部門名稱,部門編號,以及該部門的:員工姓名與頭銜 select * from Departments d left join Employees e on d.Department_ID=e.Department_Id --10.列出工資高於本部門工資平均水平的員工的部門編號,姓名,工資,而且按部門編號排序。 select * from Employees e join( select Department_Id, AVG(Salary)as 平均工資 from Employees e group by e.Department_Id)as t --求出各個部門的平均工資 on e.Department_Id=t.Department_Id where e.Salary > t.平均工資 order by e.Department_Id ---相關子查詢 select * from employees as emp where exists( select department_id,avg(salary) as avg_salary from employees as emp_sub group by department_id having emp_sub.department_id=emp.department_id and emp.salary>avg(salary) ) ---- select * from EMPLOYEES as e where e.SALARY >(select avg(SALARY) from EMPLOYEES as b where e.DEPARTMENT_ID = b.DEPARTMENT_ID) order by e.DEPARTMENT_ID --11.對於EMPLOYEES,列出各個部門中工資高於本部門平均水平的員工 數和部門號,按部門號排序 select emp.department_id as 部門編號, count(*) as 員工數 from Employees as emp where emp.salary > (select avg(salary) from employees emp_sub where emp_sub.department_id=emp.department_id) group by emp.department_id order by emp.department_id --12.請找出部門中具備2人以上,員工工資大於所在部門平均工資的:部門的id與這些人的人數。 --分解: --1>.部門中有人的工資比部門的平均工資還高 --2>而且這些人在2人以上 --3>查詢出這些部門Id,與工資高於部門平均工資的人的人數。 select emp.department_id as 部門編號, count(*) as 員工數 from Employees as emp where emp.salary > (select avg(salary) from employees emp_sub where emp_sub.department_id=emp.department_id) group by emp.department_id having count(*) >2 order by emp.department_id --13.對於EMPLOYEES中低於本身工資至少5人的員工,列出其部門號,姓名,工資, --以及工資少於本身的人數 select employee_name 姓名, salary 工資, 小於本身工資的人數=(select count(*) from employees as emp_sub where emp_sub.salary<emp.salary) from employees as emp where (select count(*) from employees as emp_sub where emp_sub.salary<emp.salary)<5