MySQL单表查询以及多表查询实例(SELECT、GROUP BY、ORDER BY...)

题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; 

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值