經常使用sql(mysql) 初版

表結構

clipboard.png

clipboard.png

1.列出至少有一名員工的全部部門 NO

  1. 常規

select dname from dept where deptno in(select deptno from emp);sql

2.exists 的用法?spa

select dname from dept where exists(select NULL from emp where emp.deptno=dept.deptno);排序

3.使用分組ip

select dname from dept where deptno in(select deptno from emp group by deptno having count(deptno)>=1);it

2. 列出薪金比"SMITH"多的全部員工

select * from emp where sal > (select sal from emp where ename='SMITH')class

使用exises cli

select * from emp A where exists (select null from emp B where A.SAL>B.SAL and Ename ='SMITH')date

3.列出全部員工的姓名及直屬上級的姓名

1.
select m.ename,n.ename from emp m left join emp n on m.mgr=n.empno
2.
select m.ename ,(select n.ename from emp n where n.empno=m.mgr )as bossname from emp mselect

4.列出受僱日期早於其直接上級的受僱日期的員工

select m.empno,m.ename,m.mgr,m.hiredate,n.empno,n.ename,n.hiredate from emp m join emp n on m.mgr=n.empno where m.hiredate<n.hiredatesql語句

5.列出部門名稱和這些部門的員工信息,同時列出那些沒有員工的部門

1.
select dept.dname,emp.* from dept left join emp on dept.deptno=emp.deptno order by dept.dname
2.
select dept.dname,emp.* from dept left join emp Using(deptno) order by dept.dname

6.列出全部「CLERK」(辦事員)的姓名及其部門名稱

select ENAME,DNAME,job from emp JOIN dept on emp.deptno=dept.deptno where emp.job ='CLERK';

7.列出最低薪金大於1500的各類工做

select job from emp group by job having min(sal)>1500

select * from emp where job in(select job from emp group by job having min(sal)>1500);

8.列出在部門'sales'(銷售部),工做人員的姓名,假定不知道銷售部的部門編號

select * from emp join (select deptno from dept where dname='sales') tmp using (deptno);

  1. 常規

select dname from dept where deptno in(select deptno from emp);

2.exists 的用法?

select dname from dept where exists(select NULL from emp where emp.deptno=dept.deptno);

3.使用分組

select dname from dept where deptno in(select deptno from emp group by deptno having count(deptno)>=1);

9.列出薪金高於公司平均薪金的全部員工

select ename from emp where sal>(select avg(sal) from emp );

10.列出與"SCOTT"從事相同工做的全部員工

select * from emp A where exists(select job from emp B where ename='SCOTT' AND A.JOB=B.JOB) AND eNAME !='scott';

11.列出薪金等於部門30中員工的薪金的全部員工的姓名和薪金

select ename,sal,deptno from emp where sal in(select sal from emp where deptno='30') and deptno <>'30';

12.列出薪金高於部門30中員工的薪金的全部員工的姓名和薪金

select ename,sal,deptno from emp where sal >ALL(select SAL from emp where deptno='30') and deptno <>'30';
select ename,sal,deptno from emp where sal >(select MAX(SAL) from emp where deptno='30') and deptno <>'30';

13.列出在每一個部門工做的員工數量、平均工資和平均服務期限

select count(empno),avg(sal),deptno from emp right join dept using(deptno) group by deptno

14.列出全部員工的姓名、部門名稱和工資(薪金+佣金)

select empno,dname,sal+comm as wage from emp join dept using(deptno);

15.列出全部部門的詳細信息和部門人數

select dept.* from dept join emp using(deptno);

16. 列出各類工做的最低工資

select job ,min(sal) from emp group by job

17. 列出各個部門的Manager(經理)的最低薪金

select min(sal) as sal,deptno from emp where job='manager' group by deptno

18. 列出全部員工的年工資(薪金+佣金),按年薪從低到高排序

select (sal+comm)*12 as money,ename from emp order by money

19.用一條sql語句查詢出全部emp表中每一個部門工資前三位的數據 展現以下,sal1 工資最高,依次向後

deptno sal1 sal2 sal3

select sal from emp

相關文章
相關標籤/搜索