動力節點經典34道MySQL面試題(中)

11~取得最後入職的5名員工
SELECT ENAME,HIREDATE
FROM emp
ORDER BY HIREDATE DESC
LIMIT 5
12~取得每個薪水等級有多少員工
SELECT t.GRADE,count(GRADE)
FROM (SELECT e.ENAME,e.SAL,s.GRADE
FROM emp e
JOIN salgrade s
ON e.SAL BETWEEN s.LOSAL AND s.HISAL

) t
GROUP BY t.GRADE
ORDER BY GRADE
13~列出所有員工以及領導的名字
SELECT e1.ENAME employname,e2.ENAME Leadername
FROM emp e1
LEFT JOIN emp e2
ON e2.EMPNO=e1.MGR
14~列出受僱日期早於其直接上級的所有員工編號、姓名、部門名稱
SELECT t.EMPNO,t.ENAME,d.DNAME
FROM (SELECT e1.EMPNO,e1.ENAME,e1.DEPTNO
FROM emp e1
JOIN emp e2
ON e2.EMPNO=e1.MGR AND e1.HIREDATE < e2.HIREDATE
) t
JOIN dept d
ON t.DEPTNO=d.DEPTNO
15~列出部門名稱和這些部門的員工信息,同時列出那些沒有員工的部門
SELECT d.DNAME,e.*
FROM dept d
LEFT JOIN emp e
ON e.DEPTNO=d.DEPTNO
ORDER BY d.DNAME
16~列出至少有5個員工的所有部門
SELECT d.DEPTNO,d.DNAME,t.total
FROM(SELECT DEPTNO,count(ENAME) total 
FROM emp
GROUP BY DEPTNO
HAVING count(ENAME)>=5
ORDER BY DEPTNO
) t
JOIN dept d
ON d.DEPTNO=t.DEPTNO
17~列出薪水比"SMITH"多的所有員工信息
SELECT *
FROM emp 
WHERE SAL>(SELECT SAL
FROM emp
WHERE ENAME ="SMITH")
18~列出所有"CLERK”(辦事員)的姓名及其部門名稱,部門人數
SELECT t1.*,t2.total
FROM (SELECT d.DEPTNO,e.ENAME,d.DNAME
FROM dept d
JOIN emp e
ON e.DEPTNO=d.DEPTNO
WHERE JOB="CLERK"
) t1
JOIN (SELECT DEPTNO,count(ENAME) total 
FROM emp
GROUP BY DEPTNO
ORDER BY DEPTNO
) t2
ON t1.DEPTNO=t2.DEPTNO
ORDER BY DEPTNO
19~列出最低薪水大於1500的各種工作及從事此工作的全部僱員人數
SELECT t2.*
FROM (SELECT DISTINCT job,min(SAL) minsal
FROM emp
GROUP BY JOB
HAVING minsal>=1500
) t1
JOIN (SELECT JOB,count(JOB)
FROM emp
GROUP BY JOB
) t2
ON t1.JOB=t2.JOB
20~列出在部門"SALES"<銷售部>工作的員工的姓名,假定不知道銷售部門的部門編號
SELECT e.ENAME,t.DNAME
FROM emp e
JOIN (SELECT DEPTNO,DNAME 
FROM dept
WHERE DNAME="SALES"
) t
ON e.DEPTNO=t.DEPTNO
 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章