找回密码
 立即注册

推荐阅读

  • 便民服务
  • 关注我们
  • 社区新手
deptemp
create table dept (dept1 int(10) PRIMARY key,dept_name VARCHAR(20));
desc dept;
SELECT * from dept;
INSERT INTO dept VALUES(101,'财务');
INSERT into dept VALUES(102,'销售');
INSERT into dept VALUES(103,'IT技术');
INSERT into dept VALUES(104,'行政');
create table emp(sid int(10) PRIMARY key,name VARCHAR(20),age int(20),worktime_start date,incoming int(20),dept2 int(20));
desc emp;
SELECT * from emp;
INSERT INTO emp VALUES(1789,'张三',35,"1980-01-01",4000,101);
INSERT into emp VALUES(1674,'李四',32,"1983-04-01",3500,101);
INSERT into emp VALUES(1776,'王五',24,"1990-07-01",2000,101);
INSERT into emp VALUES(1568,'赵六',57,"1970-10-11",7500,102);
INSERT into emp VALUES(1564,'荣七',64,"1963-10-11",8500,102);
INSERT into emp VALUES(1879,'牛八',55,"1971-10-20",7300,103);
1.列出每个部门的平均收入及部门名称;
select dept.dept_name,t.a from dept join (select dept2,avg(incoming) a from emp group by dept2)t on dept.dept1=t.dept2;
2.财务部门的收入总和;
select sum(incoming) from emp where dept2=(select dept1 from dept where dept_name='财务');
3.It技术部入职员工的员工号;
select sid from emp where dept2=(select dept1 from dept where dept_name='IT技术');
4.财务部门收入超过2000元的员工姓名;
select name from emp where dept2=(select dept1 from dept where dept_name='财务') and incoming>2000;
5.找出销售部收入最低的员工的入职时间;
select emp.worktime_start from(select dept2,min(incoming) m from emp,dept  where dept.dept1=emp.dept2 and dept_name='销售')t , emp where t.m=emp.incoming and emp.dept2=t.dept2 ;
6.找出年龄小于平均年龄的员工的姓名,ID和部门名称;
select name,sid,dept_name from dept,emp where dept.dept1=emp.dept2 and age<(select avg(age) from emp);
7.列出每个部门收入总和高于9000的部门名称;
select dept_name from(select dept2,sum(incoming) from emp group by dept2 having sum(incoming)>9000) t,dept where dept.dept1=t.dept2;
select dept_name from dept where dept1 in(select dept2 from emp group by dept2 having sum(incoming)>9000);
8.查出财务部门工资少于3800元的员工姓名;
select name from emp where dept2=(select dept1 from dept where dept_name='财务') and incoming<3800;
9.求财务部门最低工资的员工姓名;
select name from(select dept2,min(incoming) m from emp,dept where emp.dept2=dept.dept1 and dept_name='财务') t ,emp where t.dept2=emp.dept2 and t.m=emp.incoming;
10.找出销售部门中年纪最大的员工的姓名;
select name from(select dept2,max(age) m from emp,dept where emp.dept2=dept.dept1 and dept_name='销售') t ,emp where emp.dept2=t.dept2 and emp.age=t.m;
11.求收入最低的员工姓名及所属部门名称;
select name,dept_name from dept,emp where dept.dept1=emp.dept2 and incoming=(select min(incoming) from emp);
12.求李四的收入及部门名称;
select incoming,dept_name from dept,emp where dept.dept1=emp.dept2 and name='李四';
13.求员工收入小于4000元的员工部门编号及其部门名称;
select distinct dept1 ,dept_name  from dept,emp where dept.dept1=emp.dept2 and incoming<4000;
14.列出每个部门中收入最高的员工姓名,部门名称,收入,并按照收入降序;
select name,emp1.dept_name,incoming from(select dept2 d,max(incoming) m,dept_name from emp,dept where emp.dept2=dept.dept1 group by dept2)emp1,emp where emp1.d=emp.dept2 and emp.incoming=emp1.m order by emp.incoming desc;
15.求出财务部门收益最高的俩位员工的姓名,工号,收益
select name,sid,incoming from emp where dept2=(select dept1 from dept where dept_name='财务') order by incoming asc limit 0,2;
16.查询财务部低于平均收入的员工号与员工姓名
select sid,name from emp where dept2=(select dept1 from dept where dept_name='财务') and incoming<(select avg(incoming) from emp);
17.列出部门员工数大于1个的部门名称;
select dept.dept_name from(select dept2 from emp group by dept2 having count(sid)>1)t ,dept where dept.dept1=t.dept2;
18.列出部门员工收入不超过7500,且大于3000的员工年纪及部门编号;
select age,dept2 from emp where incoming>3000 and (incoming<7500 or incoming=7500);
19.求入职于20世纪70年代的员工所属部门名称;
select dept_name from dept,emp where dept.dept1=emp.dept2 and year(worktime_start) between 1970 and 1979;
20.查找张三所在的部门名称;
select dept_name from dept,emp where dept.dept1=emp.dept2 and name='张三';
21.列出每一个部门中年纪最大的员工姓名,部门名称;
select name,dept_name from(select dept2 d,dept_name,max(age)m from dept,emp where dept.dept1=emp.dept2 group by dept2)t ,emp where t.d=emp.dept2 and age=t.m;
22.列出每一个部门的员工总收入及部门名称;
select sum(incoming),dept_name from dept,emp where dept.dept1=emp.dept2 group by dept2;
23.列出部门员工收入大于7000的员工号,部门名称;
select sid,dept_name from dept,emp where dept.dept1=emp.dept2 and incoming>7000;
24.找出哪个部门还没有员工入职;
select dept_name from dept where dept1 not in(select dept2 from emp);
25.先按部门号大小排序,再依据入职时间由早到晚排序员工信息表;
select * from emp order by dept2 desc,worktime_start asc;
26.求出财务部门工资最高员工的姓名和员工号
select name,sid from(select dept2 d,max(incoming)m from emp,dept where dept.dept1=emp.dept2 and dept_name='财务') t ,emp where t.d=emp.dept2 and emp.incoming=t.m;
27.求出工资在75008500之间,年龄最大的员工的姓名和部门名称
select name,dept_name from dept,emp where dept.dept1=emp.dept2 and incoming between 7500 and 8500 and age=(select max(age) from emp where incoming between 7500 and 8500 );

分享至 : QQ空间
收藏

0 个回复

您需要登录后才可以回帖 登录 | 立即注册