--1> 부서테이블의 모든 데이터를 출력하라.
SELECT *
FROM EMP
--2> EMP테이블에서 각 사원의 직업, 사원번호, 이름, 입사일을 출력하라.
SELECT JOB, EMPNO, ENAME, HIREDATE
FROM EMP
--3> EMP테이블에서 직업을 출력하되, 각 항목(ROW)가 중복되지 않게 출력하라.
SELECT DISTINCT JOB
FROM EMP
--4> 급여가 2850 이상인 사원의 이름 및 급여를 출력하라.
SELECT ENAME, SAL
FROM EMP
WHERE SAL >= 2850
--5> 사원번호가 7566인 사원의 이름 및 부서번호를 출력하라.
SELECT ENAME, DEPTNO
FROM EMP
WHERE EMPNO = 7566
--6> 급여가 1500이상 ~ 2850이하의 범위에 속하지 않는 모든 사원의 이름 및 급여를 출력하라.
SELECT ENAME, SAL
FROM EMP
WHERE SAL NOT BETWEEN 1500 AND 2850
--7> 1981년 2월 20일 ~ 1981년 5월 1일에 입사한 사원의 이름,직업 및 입사일을 출력하되,
-- 입사일을 기준으로 해서 오름차순으로 정렬하라.
SELECT ENAME, JOB, HIREDATE
FROM EMP
WHERE HIREDATE BETWEEN '1981-02-20' AND '1981-05-01'
ORDER BY HIREDATE
--8> 10번 및 30번 부서에 속하는 모든 사원의 이름과 부서 번호를 출력하되, 이름을 알파벳순으로 정렬하라.
SELECT ENAME, DEPTNO
FROM EMP
WHERE DEPTNO IN(10,30)
ORDER BY ENAME
--9> 10번 및 30번 부서에 속하는 모든 사원 중 급여가 1500을 넘는 사원의 이름 및 급여를 출력하라.
--(단 컬럼명을 각각 employee 및 Monthly Salary로 지정하시오)
SELECT ENAME AS 'Employee', SAL AS ' Monthly Salary'
FROM EMP
WHERE DEPTNO IN(10,30) AND SAL > 1500
--10> 관리자가 없는 모든 사원의 이름 및 직위를 출력하라.
SELECT ENAME, JOB
FROM EMP
WHERE MGR IS NULL
--11> 커미션을 받는 모든 사원의 이름, 급려 및 커미션을 출력하되, 급여를 기준으로 내림차순으로 정렬하라.
SELECT ENAME, SAL, COMM
FROM EMP
WHERE COMM IS NOT NULL
ORDER BY SAL DESC;
--12> 이름의 세 번째 문자가 A인 모든 사원의 이름을 출력하라
SELECT ENAME
FROM EMP
WHERE ENAMAE LIKE '__A%'
--13> 이름에 L이 두 번 들어가며 부서 30에 속해있는 사원의 이름을 출력하라.
SELECT ENAME
FROM EMP
WHERE ENAME LIKE '%L%L%' AND DEPTNO = 30;
--14> 직업이 Clerk 또는 Analyst이면서 급여가 1000, 3000, 5000 이 아닌
-- 모든 사원의 이름, 직업 및 급여를 출력하라.
SELECT ENAME, JOB, SAL
FROM EMP
WHERE JOB IN('Clerk', 'Analyst') AND SAL NOT IN(1000, 3000, 5000);
--15> 사원번호, 이름, 급여 그리고 15%인상된 급여를 정수로 표시하되 컬럼명을 New Salary로 지정하여 출력하라.
SELECT EMPNO, ENAME, SAL,
ROUND(SAL + (SAL*0.15), 0) AS "New Salary"
FROM EMP
--16> 15번 문제와 동일한 데이터에서 급여 인상분(새 급여에서 이전 급여를 뺀 값)을 추가해서 출력하라.
-- 컬럼명은 Increase로 하라.
SELECT EMPNO, ENAME, SAL, ROUND(SAL + (SAL * 0.15)) AS "New Salary",
(ROUND(SAL + (SAL * 0.15))) - SAL AS "Increase"
FROM EMP
--17> 모든 사원의 이름(첫 글자는 대문자로, 나머지 글자는 소문자로 표시) 및 이름 길이를 표시하는 쿼리를 작성하고 컬럼 별칭은 적당히 넣어서 출력하라.
SELECT UPPER(SUBSTR(ENAME, 1, 1)) || LOWER(SUNSTR(ENAME, 2, 12)) AS "NAME",
LENGTH(ENAME) AS "LENENAME"
FROM EMP
--18> 사원의 이름과 커미션을 출력하되, 커미션이 책정되지 않은 사원의 커미션은 'no commission'으로 출력하라.
SELECT ENAME, NVL(TO_CHAR(COMM), 'no commision')
FROM EMP
--20> 모든 사원의 이름, 부서 번호, 부서 이름을 표시하는 질의를 작성하라.(DECODE)
SELECT EMPNO, DEPTNO, DECODE(DEPTNO, 10, 'ACCOUNTING', 20, 'RESEARCH', 30, 'SALES', 40, 'OPERATIONS') AS "DNAME"
FROM EMP;
--21> 30번 부서에 속한 사원의 이름과 부서번호 그리고 부서이름을 출력하라.
SELECT E.NAME, E.DEPTNO, D.DNAME
FROM EMP E, DEPT D
WHERE E.DEPTNO = D.DEPTNO AND E.DEPTNO = 30;
--22> 30번 부서에 속한 사원들의 모든 직업과 부서위치를 출력하라.
--(단, 직업 목록이 중복되지 않게 하라.)
SELECT DISTINCT E.JOB, D.LOC
FROM EMP E, DEPT D
WHERE E.DEPTNO = D.DEPTNO AND D.DEPTNO = 30;
--23> 커미션이 책정되어 있는 모든 사원의 이름, 부서이름 및 위치를 출력하라.
SELECT E.ENAME, D.DNAME, D.LOC
FROM EMPE, DEPT D
WHERE E.DEPTNO = D.DEPTNO AND COMM IS NOT NULL;
--24> 이름에 A가 들어가는 모든 사원의 이름과 부서 이름을 출력하라.
SELECT E.ENAME, D.DNAME
FROM EMP M, DEPT D
WHERE E.DEPTNO = D.DEPTNO AND E.ENAME LIKE '%A%';
--25> Dalls에서 근무하는 모든 사원의 이름, 직업, 부서 번호 및 부서 이름을 출력하라.
SELECT E.ENAME, E.JOB, E.DEPTNO, D.DNAME
FROM EMP E, DEPT D
WHERE E.DEPTNO = D.DEPTNO AND D.LOC = 'Dalls';
--26> 사원 이름 및 사원 번호, 해당 관리자 이름 및 관리자 번호를 출력하되,
-- 각 컬럼명을 employee, emp#, manager, mgr#으로 표시하여 출력하라.
SELECT E.ENAME AS "EMPPLOYEE", E.EMPNO AS "EMP#",
M.ENAME AS "MANAGER", M.EMPNO AS "MGR#"
FROM EMP E, EMP M
WHERE E.MGR = M.EMPNO;
--27> 모든 사원의 이름, 직업, 부서 이름, 급여 및 등급을 출력하라.
SELECT E.ENAME, E.JOB, D.DNAME, E.SAL, S.GRADE
FROM EMP E, DEPT P, SALGRADE S
WHERE E.DEPTNO = D.DEPTNO
AND E.SAL BETWEEN S.LOSAL AND S.HISAL;
--28> Smith 보다 늦게 입사한 사원의 이름 및 입사일을 출력하라.
SELECT ENAME, HIREDATE
FROM EMP
WHERE HIREDATE > (SELECT HIREDATE
FROM EMP
WHERE ENAME = 'SMITH');
--30> 모든 사원의 급여 최고액, 최저액, 총액 및 평균액을 출력하되 각 컬럼명을 Maximum, Minimum, Sum, Average로 지정하여 출력하라.
SELECT MAX(SAL) AS "Maximum",MIN(SAL) AS "Minimum", SUM(SAL) AS "Sum", AVG(SAL) AS "Average"
FROM EMP