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面试题##测试#
测试岗面经 文章被收录于专栏
整理面试过程中的测试问答,常看常新,多多学习!有些问题是从其他人那里转载而来,会在文章下面注明出处,希望大家多多支持~~,觉得满意的话就送一朵小花花,谢谢! 内容目录:https://www.nowcoder.com/discuss/779856598809264128?sourceSSR=users
