SQL入门测试
来源:互联网 发布:淘宝m1911 编辑:程序博客网 时间:2024/05/01 01:02
学了数据库这么久,你的sql是否已经入门,那么试试下面的一道试题吧!
一道关于员工与部门查询的SQL笔试题(文章最后附上建表sql语句及数据,建的表不同,答案可能略有不同)
注:所有语句均在MS SQL SERVER2008中测试通过
建表:
DEPARTMENTS:DEPARTMENT_ID(primary key),DEPARTMENT_NAME,LOCATIONEMPLOYEES:EMPLOYEE_ID(primary key),EMPLOYEE_NAME,EMPLOYEE_JOB,MANAGER,SALARY,DEPARTMENT_ID
--1.列出EMPLOYEES表中各部门的部门号,最高工资,最低工资
select
department_id,
min
(salary)
as
'最高工资'
,
max
(salary)
as
'最低工资'
from
employees
group
by
department_id
--2.列出EMPLOYEES表中各部门EMPLOYEE_JOB为'CLERK'的员工的最低工资,最高工资
select
department_id,
min
(salary)
as
'最高工资'
,
max
(salary)
as
'最低工资'
from
employees
where
employee_job =
'clerk'
group
by
department_id
--3.对于EMPLOYEES中最低工资小于5000的部门,列出EMPLOYEE_JOB为'CLERK'的员工的部门号,最低工资,最高工资
select
department_id
as
'部门号'
,
MIN
(salary)
as
'最低工资'
,
MAX
(salary)
as
'最高工资'
from
employees
as
a
where
employee_job=
'clerk'
and
4000>
(
select
MIN
(salary)
from
employees
as
b
where
a.department_id=b.department_id
)
group
by
department_id
--4.根据部门号由高而低,工资有低而高列出每个员工的姓名,部门号,工资
select
employee_name ,department_id ,salary
from
employees
order
by
employee_id
desc
,salary
asc
--5.写出对上题的另一解决方法
这里,我也没想到另一种解决方法,如果有谁想到,可以在下面留言告知,感谢
--6.列出'张三'所在部门中每个员工的姓名与部门号
select
employee_name,department_id
from
employees
where
department_id =
(
select
department_id
from
employees
where
employee_name=
'张三'
)
--7.列出每个员工的姓名,工作,部门号,部门名
select
a.employee_name,a.employee_job,a.department_id,b.department_name
from
employees
as
a,departments
as
b
where
a.department_id=b.department_id
--8.列出EMPLOYEES中工作为'CLERK'的员工的姓名,工作,部门号,部门名
select
a.employee_name,a.employee_job,a.department_id,b.department_name
from
employees
as
a,departments
as
b
where
a.department_id=b.department_id
and
a.employee_job=
'clerk'
--9.对于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_name
--10.对于DEPARTMENTS表中,列出所有部门名,部门号,同时列出各部门工作为'CLERK'的员工名与工作
select
a.department_id,a.department_name,b.employee_name,b.employee_job
from
departments
as
a,employees
as
b
where
a.department_id = b.department_id
and
b.employee_job =
'clerk'
--11.对于工资高于本部门平均水平的员工,列出部门号,姓名,工资,按部门号排序
第一种方法:
select
a.department_id,a.employee_name,a.salary
from
employees
as
a,
(
select
department_id,
AVG
(salary)
as
'平均工资'
from
employees
group
by
department_id
)
as
b
where
a.department_id = b.department_id
and
a.salary>b.平均工资
order
by
a.department_id
asc
第二种方法:
select
a.department_id,a.employee_name,a.salary
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
asc
--12.对于EMPLOYEES,列出各个部门中平均工资高于本部门平均水平的员工数和部门号,按部门号排序
select
COUNT
(a.salary)
as
'人数'
,a.department_id
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
desc
--13.对于EMPLOYEES中工资高于本部门平均水平,人数多与1人的,列出部门号,人数,按部门号排序
第一种方法:
select
c.人数,c.department_id
from
(
select
COUNT
(a.salary)
as
'人数'
,a.department_id
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
)
as
c
where
c.人数>1
order
by
c.department_id
desc
第二种方法:
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
--14.对于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
and
a.department_id = b.department_id
)
as
人数
from
EMPLOYEES
as
a
where
(
select
count
(b.EMPLOYEE_NAME)
from
EMPLOYEES
as
b
where
b.SALARY<a.salary )=
""
a.department_id=
"b.department_id"
and
=
""
>5</a.salary>
--15.创建两张表并插入示例数据(注意两张表的主键设置了自增长,语句中为给出)
create
table
departments
(
department_id
int
primary
key
,
department_name nvarchar(50)
not
null
,
location nvarchar(50)
not
null
)
create
table
employees
(
employee_id
int
primary
key
,
employee_name nvarchar(50)
not
null
,
employee_job nvarchar(20)
not
null
,
manager nvarchar(20)
not
null
,
salary
float
not
null
department_id
int
not
null
)
insert
into
departments (department_name,location)
values
(
'技术部'
,
'XXX'
)
insert
into
departments (department_name,location)
values
(
'销售部'
,
'YYY'
)
insert
into
departments (department_name,location)
values
(
'财务部'
,
'ZZZ'
)
insert
into
departments (department_name,location)
values
(
'客服部'
,
'FFF'
)
insert
into
departments (department_name,location)
values
(
'售后部'
,
'AAA'
)
insert
into
departments (department_name,location)
values
(
'人力资源部'
,
'GGG'
)
insert
into
departments (department_name,location)
values
(
'后勤部'
,
'HHH'
)
insert
into
employees(employee_name,employee_job,manager,salary,department_id)
values
(
'张三'
,
'软件设计师'
,
'李四'
,5000,1)
insert
into
employees(employee_name,employee_job,manager,salary,department_id)
values
(
'王小虎'
,
'软件设计师'
,
'李四'
,4000,1)
insert
into
employees(employee_name,employee_job,manager,salary,department_id)
values
(
'王宏'
,
'软件设计师'
,
'李四'
,3560,1)
insert
into
employees(employee_name,employee_job,manager,salary,department_id)
values
(
'李四'
,
'项目经理'
,
'头头'
,8000,1)
insert
into
employees(employee_name,employee_job,manager,salary,department_id)
values
(
'燕小六'
,
'销售人员'
,
'佟湘玉'
,5100,2)
insert
into
employees(employee_name,employee_job,manager,salary,department_id)
values
(
'秀才'
,
'伙计'
,
'佟湘玉'
,2300,2)
insert
into
employees(employee_name,employee_job,manager,salary,department_id)
values
(
'佟湘玉'
,
'掌柜'
,
'头头'
,4500,2)
insert
into
employees(employee_name,employee_job,manager,salary,department_id)
values
(
'小二'
,
'会计'
,
'和珅'
,5600,3)
insert
into
employees(employee_name,employee_job,manager,salary,department_id)
values
(
'和珅'
,
'老贪'
,
'头头'
,3400,3)
insert
into
employees(employee_name,employee_job,manager,salary,department_id)
values
(
'张麻子'
,
'接线员'
,
'王五'
,5400,4)
insert
into
employees(employee_name,employee_job,manager,salary,department_id)
values
(
'力马扎'
,
'接线员'
,
'王五'
,6500,4)
insert
into
employees(employee_name,employee_job,manager,salary,department_id)
values
(
'卓玛'
,
'客服'
,
'王五'
,5300,4)
insert
into
employees(employee_name,employee_job,manager,salary,department_id)
values
(
'晓红'
,
'客服'
,
'王五'
,6700,4)
insert
into
employees(employee_name,employee_job,manager,salary,department_id)
values
(
'宪哥'
,
'客服'
,
'王五'
,7700,4)
insert
into
employees(employee_name,employee_job,manager,salary,department_id)
values
(
'王五'
,
'客户经理'
,
'头头'
,6600,4)
insert
into
employees(employee_name,employee_job,manager,salary,department_id)
values
(
'jack'
,
'人力助理'
,
'HR'
,5500,6)
insert
into
employees(employee_name,employee_job,manager,salary,department_id)
values
(
'tom'
,
'人力助理'
,
'HR'
,4400,6)
insert
into
employees(employee_name,employee_job,manager,salary,department_id)
values
(
'lucy'
,
'人力助理'
,
'HR'
,6600,6)
insert
into
employees(employee_name,employee_job,manager,salary,department_id)
values
(
'pooly'
,
'人力助理'
,
'HR'
,6600,6)
insert
into
employees(employee_name,employee_job,manager,salary,department_id)
values
(
'david'
,
'人力助理'
,
'HR'
,8800,6)
insert
into
employees(employee_name,employee_job,manager,salary,department_id)
values
(
'HR'
,
'人力资源经理'
,
'头头'
,8800,6)
insert
into
employees(employee_name,employee_job,manager,salary,department_id)
values
(
'小东'
,
'售后支持'
,
'笑笑'
,4500,5)
insert
into
employees(employee_name,employee_job,manager,salary,department_id)
values
(
'小丽'
,
'售后支持'
,
'笑笑'
,5400,5)
insert
into
employees(employee_name,employee_job,manager,salary,department_id)
values
(
'笑笑'
,
'售后部经理'
,
'头头'
,5600,5)
insert
into
employees(employee_name,employee_job,manager,salary,department_id)
values
(
'李逵'
,
'后勤'
,
'晁盖'
,6500,7)
insert
into
employees(employee_name,employee_job,manager,salary,department_id)
values
(
'松江'
,
'后勤'
,
'晁盖'
,4700,7)
insert
into
employees(employee_name,employee_job,manager,salary,department_id)
values
(
'林冲'
,
'后勤'
,
'晁盖'
,7400,7)
insert
into
employees(employee_name,employee_job,manager,salary,department_id)
values
(
'晁盖'
,
'后勤部经理'
,
'头头'
,4400,7)
insert
into
employees(employee_name,employee_job,manager,salary,department_id)
values
(
'头头'
,
'董事长'
,
'无'
,44400,0)
insert
into
employees(employee_name,employee_job,manager,salary,department_id)
values
(
'一一'
,
'CLERK'
,
'头头'
,2300,1)
insert
into
employees(employee_name,employee_job,manager,salary,department_id)
values
(
'二二'
,
'CLERK'
,
'头头'
,3400,2)
insert
into
employees(employee_name,employee_job,manager,salary,department_id)
values
(
'三三'
,
'CLERK'
,
'头头'
,4500,3)
insert
into
employees(employee_name,employee_job,manager,salary,department_id)
values
(
'四四'
,
'CLERK'
,
'头头'
,5600,4)
insert
into
employees(employee_name,employee_job,manager,salary,department_id)
values
(
'无无'
,
'CLERK'
,
'头头'
,5400,5)
insert
into
employees(employee_name,employee_job,manager,salary,department_id)
values
(
'六六'
,
'CLERK'
,
'头头'
,4300,6)
insert
into
employees(employee_name,employee_job,manager,salary,department_id)
values
(
'七七'
,
'CLERK'
,
'头头'
,3200,7)
最后注:本题来自:http://www.nowamagic.net/database/db_EmployeeDepartmentSQL.php
感谢文章作者
- SQL入门测试
- SQL语句入门级(MySQL测试)
- 测试入门
- 测试入门
- 测试入门--功能测试
- SQL 测试 !!!
- SQL测试
- SQL-测试
- sql 入门
- SQL 入门
- SQL入门
- SQL 入门
- SQL入门
- SQL入门
- SQL入门
- SQL入门
- SQL入门
- SQL入门
- oracle序列循环
- FFT(快速傅里叶变换)程序分析
- 使用托管代码创建 XML Web services
- myeclipse下开发 tomcat动态加载代码问题
- SAP 选择屏幕的收起与展开(Collapse and Expand)
- SQL入门测试
- hibernate
- PermGen space
- 检查SELECTION-SCREEN 上面输入的参数是否合适
- javadoc-java 文档生成器的一些事儿
- LTP在Android上的移植
- C# []、List、Array、ArrayList 区别及应用
- 关于stretchableImageWithLeftCapWidth:topCapHeight方法的原理
- Servlet中listener和filter的总结[转]