SQL语句面试问答(二)

二、多表查询面试题

create table departments (
deptid int(10) primary key, 
deptname varchar(20) not null -- 部门名称
);
insert into departments values ('1001','市场部');
insert into departments values ('1002','测试部');
insert into departments values ('1003','开发部');

create table employees (
	empid int(10) primary key, 
	empname varchar(20) not null,-- 姓名
	sex varchar(4) default null, -- 性别
	deptid int(20) default null,-- 部门编号
	jobs varchar(20) default null, -- 岗位
	politicalstatus varchar(20) default null,-- 政治面貌
	leader int(10) default null
);

insert into employees values ('1','王一','女','1003','开发','群众','9');
insert into employees values ('2','朱二','男','1003','开发经理','群众',null);
insert into employees values ('3','张三','男','1002','测试','团员','4');
insert into employees values ('4','白四','男','1002','测试经理','党员',null);
insert into employees values ('5','杨五','女','1002','测试','党员','4');
insert into employees values ('6','孙六','女','1001','市场','党员','12');
insert into employees values ('7','赵七','男','1001','市场','团员','12');
insert into employees values ('8','小八','女','1002','测试','群众','4');
insert into employees values ('9','久久','男','1003','开发','党员','9');
insert into employees values ('10','史十','女','1003','开发','团员','9');
insert into employees values ('11','李十一','男','1002','测试','团员','4');
insert into employees values ('12','孙十二','男','1001','市场经理','党员',null);

create table salary (
	sid int(10) primary key, 
	empid int(10) not nul1, 
	salary int(10) not null-- 工资
);

insert into salary values ('1','7','2100');
insert into salary values ('2','6','2000');
insert into salary values ('3','12','5000');
insert into salary values ('4','9','1999');
insert into salary values ('5','10','1900');
insert into salary values ('6','1','3000');
insert into salary values ('7','2','5500');
insert into salary values ('8','5','2000');
insert into salary values ('9','3','1500');
insert into salary values ('10','8','4000');
insert into salary values ('11','11','2600');
insert into salary values ('12','4','5300');

1.列出总人数大于4的部门号和总人数

select deptid, count(*) from employees group by deptid having count(*)>4

2.列出开发部和测试部的职工号,姓名

select e.empid,d.deptname 
from employees as e 
inner join deptnames as d on e.empid=d.deptid 
where d.department in ('开发部','测试部')

3.求出各部门党员的人数,要求显示部门名称

select d.deptname , count(*)
from employees as e 
inner join departments as d on e.empid=d.deptid 
where e.politicalstatus='党员' group by e.deptid

4.列出市场部的所有女职工的姓名和政治面貌

select e.empname,e.politicalstatus 
from employees as e 
inner join departments as d on e.empid=d.deptid
where e.sex='女' and d.deptname='市场部'

5.显示所有职工的姓名,部门名和工资数

select e.empname,d.deptname,s.salary
from employees as e 
inner join departments as d on e.empid=d.deptid
inner join salary as s on e.empid=s.empid

6.显示各部门名和该部门的职工平均工资

select d.deptname, avg(s.salary) from departments as d 
inner join employees as e on e.empid=d.deptid
inner join salary as s on e.empid=s.empid 
group by d.deptname

7.显示工资最高的前3名职工的职工号和姓名

select e.empid,e.empname,s.salary from employees as e
inner join salary as s on e.empid=s.empid
order by s.salary desc limit 3

8.列出工资在1000-2000之间的所有职工姓名

select e.empname,s.salary from salary as s
inner join employees as e on e.empid=s.empid
where s.salary between 1000 and 2000

9.列出工资比王一高的员工

select * from employees as e
inner join salary as s on e.empid=s.empid
where s.salary > (
select s.salary from employees as e 
inner join salary as s on e.empid=s.empid 
where e.empname='王一')

#sql面试题##测试#
测试岗面经 文章被收录于专栏

整理面试过程中的测试问答,常看常新,多多学习!有些问题是从其他人那里转载而来,会在文章下面注明出处,希望大家多多支持~~

全部评论

相关推荐

07-01 13:37
门头沟学院 Java
steelhead:不是你的问题,这是社会的问题。
点赞 评论 收藏
分享
评论
点赞
3
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务