oracle--1.函数的作业

--1.函数的作业
--1.找出部门为10.的所有经理和部门20.中的所有分析师(ANALYST)的详细资料


SELECT * FROM EMP WHERE DEPTNO = 10 AND JOB ='MANAGER';
SELECT * FROM EMP WHERE DEPTNO = 20 AND JOB ='ANALYST';


SELECT * FROM EMP WHERE (DEPTNO = 10 AND JOB ='MANAGER')
OR(DEPTNO = 20 AND JOB ='ANALYST');
--2.找出各月的最后一天受雇的所有员工


SELECT * FROM EMP WHERE HIREDATE = LAST_DAY(HIREDATE);


--3.找出首字母大写的所有雇员的姓名
SELECT * FROM EMP WHERE INITCAP(ENAME)= ENAME;


SELECT * FROM EMP WHERE INITCAP(ENAME) LIKE SUBSTR(ENAME,1,1)||'%';


SELECT * FROM EMP WHERE INITCAP(SUBSTR(ENAME,1,1)) =SUBSTR(ENAME,1,1);


--4.显示所有雇员的姓名以及满10年的服务期限


SELECT ENAME,HIREDATE,ADD_MONTHS(HIREDATE,10*12) FROM EMP;


--5.取得部门中所有人的平均薪水
--第一步:先获取所有人的薪水等级
SELECT E.EMPNO,E.ENAME,E.SAL,E.DEPTNO,G.GRADE FROM EMP E,SALGRADE G
WHERE E.SAL BETWEEN G.LOSAL AND G.HISAL;


--第二部;将第一步的结果用部门进行分组,并获取等级的而平均值
SELECT S.DEPTNO,AVG(S.GRADE),AVG(SAL) FROM
(SELECT E.EMPNO,E.ENAME,E.SAL,E.DEPTNO,G.GRADE FROM EMP E,SALGRADE G
WHERE E.SAL BETWEEN G.LOSAL AND G.HISAL) S GROUP BY S.DEPTNO


--6.取得平均薪水部门最高的编号
--第一步 取得各部门的最大值
SELECT MAX(AVG(SAL)) MAX_SAL FROM EMP E GROUP BY DEPTNO; 
--第二步 使用having过滤 获取最大值
SELECT A.DEPTNO ,AVG(SAL) AVG_SAL FROM EMP A GROUP BY DEPTNO 
HAVING  AVG(SAL) = 
(SELECT MAX(AVG(SAL)) MAX_SAL FROM EMP E GROUP BY DEPTNO);

猜你喜欢

转载自blog.csdn.net/xiaoxiaode_shu/article/details/80460798