mysql>select a.ename empname,b.ename leadername,d.dname,s.grade
from emp a
join emp b on a.mgr=b.empno
join dept d on a.deptno=d.deptno
join salgrade s on a.sal between s.losal and s.hisal
where a.sal>(select avg(sal) from emp);
mysql>select a.ename empname,b.ename leadername,d.dname,s.grade
from emp a
left join emp b on a.mgr=b.empno
join dept d on a.deptno=d.deptno
join salgrade s on a.sal between s.losal and s.hisal
where a.sal>(select avg(sal) from emp);
mysql> select job from emp where ename="SCOTT";
mysql> select ename from emp where job =(select job from emp where ename="SCOTT");
mysql> select e.ename,d.dname
from emp e join dept d on e.deptno=d.deptno
where job =(select job from emp where ename="SCOTT");
mysql> select e.ename,d.dname
from emp e join dept d on e.deptno=d.deptno
where job =(select job from emp where ename="SCOTT") and e.ename!="SCOTT";
妈的,这句话是在考语文吗?
第一步:薪金等于部门30中员工的薪金
mysql> select distinct sal from emp where deptno =30;
第二步:
列出薪金等于部门30中员工的薪金的其他员工的姓名和薪金
不在部门30中与部门30的薪金相同的员工姓名和薪金
mysql> select ename,sal from emp
where sal in( select distinct sal from emp where deptno=30) and deptno<>30;
mysql> select max(sal) maxsal from emp where deptno=30;
mysql>select e.ename,e.sal,d.dname from emp e
join dept d on e.deptno=d.deptno
where e.sal>( select max(sal) maxsal from emp where deptno=30) and e.deptno<>30;
第一步:将员工的emp表和部门表dept进行表连接,显示全部信息
第二步:在以上查询结果的基础上,按照d.deptno分组,按照e.ename计数
列出每个部门工作的员工数量,平均工资
mysql> select d.deptno,count(e.ename) countname,ifnull(avg(e.sal),0) avgsal
-> from emp e right join dept d
-> on e.deptno=d.deptno
-> group by d.deptno;
第三步:计算每个员工的平均服务期限
mysql> select to_days(now());
mysql> select to_days(hiredate) from emp;
mysql> select (to_days(now())-to_days(hiredate))/365 from emp;
第四步:在第二步的基础上
列出每个部门工作的员工数量,平均工资和平均服务期限
mysql> select
-> d.deptno,
-> count(e.ename) countemp,
-> ifnull(avg(e.sal),0) avgsal,
-> ifnull( avg( (to_days(now())-to_days(hiredate))/365),0) avgtime
-> from emp e
-> right join dept d
-> on e.deptno=d.deptno
-> group by d.deptno;
mysql> select e.ename,e.sal,d.dname
from emp e join dept d on d.deptno=e.deptno;
将emp表与dept表右连接:
mysql> select e.*,d.* from emp e right join dept d on e.deptno=d.deptno;
l列出所有部门的详细信息和人数:
mysql> select d.*,count(e.ename)
from emp e right join dept d
on e.deptno=d.deptno group by d.deptno;
mysql> select job,min(sal) minsal from emp group by job;
mysql> select e.ename,t.job,t.minsal from emp e
-> join (select job,min(sal) minsal from emp group by job) t
-> on e.job=t.job and e.sal=minsal;
mysql> select deptno,min(sal) minsal from emp where job="MANAGER" group by deptno;
mysql> select ename,(sal+ifnull(comm,0))*12 yearsal from emp order by yearsal;
mysql> select a.ename empname,b.ename leadername
-> from emp a join emp b on a.mgr= b.empno
-> where b.sal>3000;
mysql> select
-> d.dname,
-> ifnull(sum(e.sal),0) sumsal,
-> count(e.ename) countemp
-> from emp e
-> right join dept d
-> on e.deptno=d.deptno
-> where d.dname like '%s%'
-> group by d.deptno;