题1.
-- 1. 查询出部门编号为30的所有员工-- 2. 所有销售员的姓名、编号和部门编号。-- 3. 找出奖金高于工资的员工。-- 4. 找出奖金高于工资60%的员工。-- 5. 找出部门编号为10中所有经理,和部门编号为20中所有销售员的详细资料。-- 6. 找出部门编号为10中所有经理,部门编号为20中所有销售员,还有即不是经理又不是销售员但其工资大或等于20000的所有员工详细资料。-- 7. 无奖金或奖金低于1000的员工。-- 8. 查询名字由三个字组成的员工。-- 注意:一个汉字占三个字节-- 9.查询2000年入职的员工。-- 10. 查询所有员工详细信息,用编号升序排序-- 11. 查询所有员工详细信息,用工资降序排序,如果工资相同使用入职日期升序排序-- 12.查询每个部门的平均工资-- 13.查询每个部门的雇员数量-- 14.查询每种工作的最高工资、最低工资、人数
首先我们查看数据表
select * from empl
-- 1. 查询出部门编号为30的所有员工
mysql> select ename from emp
-> where deptno=30;
-- 2. 所有销售员的姓名、编号和部门编号。
mysql> select ename,empno,deptno from emp where job ='销售员';
-- 3. 找出奖金高于工资的员工。
select * from emp where comm > sai;
-- 4. 找出奖金高于工资60%的员工。
select * from emp where comm > (sai*0.6);
-- 5. 找出部门编号为10中所有经理,和部门编号为20中所有销售员的详细资料。
select * from emp
-> where (deptno=10 and job='经理') or (deptno=20 and job='销售员');
-- 6. 找出部门编号为10中所有经理,部门编号为20中所有销售员,还有即不是经理又不是销售员但其工资大或等于20000的所有员工详细资料。
select * from emp where (deptno=10 and job='经理') or (deptno=20 and job='销售员')
-> or (job not in ('经理','销售员') and sai >=20000);
-- 7. 无奖金或奖金低于1000的员工。
select ename,comm from emp where comm < 1000 or comm is NULL;
-- 8. 查询名字由三个字组成的员工。
-- 注意:一个汉字占三个字节
select * from emp where ename like '___';
-- 9.查询2000年入职的员工。
select * from emp where year(hiredate)=2000;
-- 10. 查询所有员工详细信息,用编号升序排序
select * from emp order by empno;
-- 11. 查询所有员工详细信息,用工资降序排序,如果工资相同使用入职日期升序排序
select * from emp order by sai desc, hiredate;
-- 12.查询每个部门的平均工资
select avg(sai),deptno from emp group by deptno;
-- 13.查询每个部门的雇员数量
select count(deptno) from emp group by deptno;
-- 14.查询每种工作的最高工资、最低工资、人数
select max(sai),min(sai),count(job),job from emp group by job;
题2.
1、查询每个部门的所属员工2、查询研发部门的所属员工3、查询研发部和销售部的所属员工4、查询每个部门的员工数,并升序排序5、查询人数大于等于3的部门,并按照人数降序排序
1、查询每个部门的所属员工
select ename,name from emp3 a,dept3 b
where a.dept_id=b.deptno;
2、查询研发部门的所属员工
select ename,name from emp3 a,dept3 b
where a.dept_id=b.deptno and name='研发部';
3、查询研发部和销售部的所属员工
select ename,name from emp3 a,dept3 b
where a.dept_id=b.deptno and name in ('研发部','销售部');
4、查询每个部门的员工数,并升序排序
select count(1),name from emp3 a,dept3 b
where a.dept_id=b.deptno group by name ORDER BY count(1);
5、查询人数大于等于3的部门,并按照人数降序排序
select name,count(1) from emp3 a,dept3 b
where a.dept_id=b.deptno GROUP BY name HAVING count(1) >3
order by count(1) desc;