子查询练习
db40
列出薪资比'王海涛'的薪资高的所有员工,显示姓名、薪资
select name,sal from emp where sal>(select sal from emp where name="王海涛");
列出与'刘沛霞'从事相同职位的所有员工,显示姓名、职位。
select name,job from emp where job=(select job from emp where name="刘沛霞");
列出薪资比'大数据部'部门(已知部门编号为30)所有员工薪资都高的员工信息,显示员工姓名、薪资和部门名称。
select e.name,e.sal,d.name from emp e join dept d on sal>(select MAX(sal) from emp where dept_id=30);
加上没有部门的员工
select e.name,e.sal,d.name from emp e left join dept d on e.dept_id=d.id where sal>(select MAX(sal) from emp where dept_id=30);
多表查询练习
.列出在'培优部'任职的员工,假定不知道'培优部'的部门编号,显示部门名称,员工名称。
select d.name,e.name from dept d join emp e on d.name="培优部" where d.id=e.dept_id;
(自查询)列出所有员工及其直接上级,显示员工姓名、上级编号,上级姓名
select c.name,c.id,c.topid,p.name,p.id from emp c join emp p on c.topid=p.id;
列出最低薪资大于1500的各种职位,显示职位和该职位的最低薪资
select job,min(sal) from emp group by job having min(sal)>1500;
// 补充where和having的区别
// 1.都能过滤2.where是在分组之前对数据过滤;having是在分组之后对数据过滤3.where不能和聚合函数一起使用,不能和order\group使用
列出在每个部门就职的员工数量、平均工资。显示部门编号、员工数量,平均薪资。
select count(*),avg(sal),dept_id from emp group by dept_id;
查出至少有一个员工的部门,显示部门编号、部门名称、部门位置、部门人数。
select e.dept_id,d.name,d.loc,count(*) from emp e join dept d on e.dept_id=d.id group by dept_id having count(*)>0;
列出受雇日期早于直接上级的所有员工,显示员工编号、员工姓名、部门名称。
select c.id,c.name,c.dept_id,d.name dept_name from emp c,emp p, dept d where c.topid=p.id and c.dept_id=d.id and c.hdate<p.hdate;
查询员工表中薪资最高的员工信息
select * from emp order by sal desc limit 0,1;
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。