MySQL多表与分组练习题及答案
生活随笔
收集整理的這篇文章主要介紹了
MySQL多表与分组练习题及答案
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
目錄
題目?
?答案
題目?
-- 多表與分組練習
-- 注意:員工如果沒有特殊指明,指的就是所有人。
-- 1、返回部門號及其本部門的最低工資。
-- 2、計算出員工的年薪,并且以年薪排序。
-- 3、返回員工工作及其從事此工作的最低工資。
-- 3查找和SCOTT從事相同工作的員工信息
-- 4、工資水平多于JAMES的員工信息。
-- 5、返回工資大于平均工資的員工信息。
-- 6、返回銷售部(SALES)所有員工的姓名。
-- 7、返回工資高于30部門所有員工工資水平的員工信息。
-- 8返回查找最高工資和最低工資的職員信息
-- 9、返回擁有員工的部門名、部門號。
-- 10、返回員工的姓名、所在部門名及其工資。
-- 11、返回從事職員工作的員工姓名和所在部門名稱。
-- 13、返回部門號、部門名、部門所在位置及其每個部門的員工總數。?? ?
-- 14、返回員工(職員或者銷售員)和所屬經理的姓名。
-- 15、返回員工(職員或者銷售員)的入職日期早于其經理入職日期的員工及其經理姓名。
-- 16、返回工資處于第四級別的員工的姓名和工資。
-- 17、返回處于第二級別的最高工資和最低工資的職員信息
?答案
-- 多表與分組練習 -- 注意:員工如果沒有特殊指明,指的就是所有人。-- 1、返回部門號及其本部門的最低工資。 SELECT DEPTNO,MIN(sal) FROM emp GROUP BY DEPTNO; -- 2、計算出員工的年薪,并且以年薪排序。 SELECT *,sal*12 allsal FROM emp ORDER BY allsal DESC; -- 3、返回員工工作及其從事此工作的最低工資。 SELECT job,MIN(sal) FROM emp GROUP BY job; -- 3查找和SCOTT從事相同工作的員工信息 SELECT job FROM emp WHERE ename='SCOTT'; SELECT * FROM emp WHERE job=(SELECT job FROM emp WHERE ename='SCOTT'); -- 4、工資水平多于JAMES的員工信息。 SELECT * FROM emp WHERE sal>(SELECT sal FROM emp WHERE ename='JAMES'); -- 5、返回工資大于平均工資的員工信息。 SELECT AVG(sal) FROM emp; SELECT * FROM emp WHERE sal>(SELECT AVG(sal) FROM emp); -- 6、返回銷售部(SALES)所有員工的姓名。 SELECT DEPTNO FROM dept WHERE DNAME='SALES'; SELECT * FROM emp WHERE DEPTNO=(SELECT DEPTNO FROM dept WHERE DNAME='SALES'); -- 7、返回工資高于30部門所有員工工資水平的員工信息。 SELECT sal FROM emp WHERE DEPTNO=30; SELECT * FROM emp WHERE sal > ALL(SELECT sal FROM emp WHERE DEPTNO=30); -- 8返回查找最高工資和最低工資的職員信息 SELECT emp.* FROM emp,(SELECT MIN(sal) min_sal, MAX(sal) max_sal FROM emp WHERE job='職員') sal WHERE emp.job='職員' AND (emp.sal=sal.min_sal OR emp.SAL=sal.max_sal); -- 9、返回擁有員工的部門名、部門號。 SELECT DISTINCT dept.DEPTNO,dept.DNAME FROM dept INNER JOIN emp ON dept.DEPTNO=emp.DEPTNO; -- 顯示內連接 SELECT DISTINCT dept.DEPTNO,dept.DNAME FROM dept JOIN emp ON dept.DEPTNO=emp.DEPTNO; -- 省略inner SELECT DISTINCT dept.DEPTNO,dept.DNAME FROM dept,emp WHERE dept.DEPTNO=emp.DEPTNO; -- 隱式內連接 -- 10、返回員工的姓名、所在部門名及其工資。 SELECT emp.ENAME,dept.DNAME,emp.SAL FROM emp,dept WHERE emp.DEPTNO=dept.DEPTNO; -- 11、返回從事職員工作的員工姓名和所在部門名稱。 SELECT emp.ENAME,dept.DNAME FROM emp,dept WHERE emp.DEPTNO=dept.DEPTNO AND emp.JOB ='職員'; -- 13、返回部門號、部門名、部門所在位置及其每個部門的員工總數。 SELECT dept.DEPTNO,dept.DNAME,dept.LOC ,COUNT(*)FROM dept,emp WHERE dept.DEPTNO=emp.DEPTNO GROUP BY dept.DEPTNO; -- 14、返回員工(職員或者銷售員)和所屬經理的姓名。 SELECT * FROM emp WHERE job IN('職員','銷售員'); SELECT * FROM emp WHERE job='經理'; SELECT e1.ENAME,e2.ENAME FROM emp e1,(SELECT empno,ename FROM emp WHERE job='經理') e2 WHERE e1.MGR=e2.EMPNO; -- 15、返回員工(職員或者銷售員)的入職日期早于其經理入職日期的員工及其經理姓名。 SELECT EMPNO,ENAME,HIREDATE FROM emp WHERE job='經理'; SELECT e1.ENAME,e2.ENAME, FROM emp e1,(SELECT EMPNO,ENAME,HIREDATE FROM emp WHERE job='經理') e2 WHERE e1.MGR=e2.EMPNO AND e1.HIREDATE<e2.HIREDATE; -- 16、返回工資處于第四級別的員工的姓名和工資。 SELECT emp.ENAME,emp.SAL FROM emp,(SELECT LOSAL,HISAL FROM salgrade WHERE GRADE=4) salgrade WHERE emp.sal BETWEEN salgrade.LOSAL AND salgrade.HISAL; -- 17、返回處于第二級別的最高工資和最低工資的職員信息 SELECT MAX(emp.SAL) sal_max,MIN(emp.SAL) sal_min FROM emp,(SELECT LOSAL, HISAL FROM salgrade WHERE GRADE = 2) grade WHERE emp.JOB = '職員' AND emp.SAL BETWEEN GRADE.losal AND GRADE.hisal; SELECT * FROM emp,(SELECTMAX(emp.SAL) sal_max,MIN(emp.SAL) sal_minFROM emp,(SELECTLOSAL,HISALFROM salgradeWHERE GRADE = 2) gradeWHERE emp.JOB = '職員'AND emp.SAL BETWEEN GRADE.losalAND GRADE.hisal) sg WHERE emp.JOB = '職員'AND emp.SAL IN(sg.sal_max,sg.sal_min);?
總結
以上是生活随笔為你收集整理的MySQL多表与分组练习题及答案的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: MySQL事务隔离级别及演示
- 下一篇: MySQL添加中文记录报错解决方法