본문 바로가기
Database

오라클로 배우는 데이터베이스 입문, 둘째 마당 06 - 1 ~ 4번 문제

by Jiwon_Loopy 2025. 4. 27.
반응형

1. 사원 이름이 다섯 글자 이상이며 여섯 글자 미만인 사원 정보를 출력, MASKING_EMPNO 열에는 사원 번호 앞 두 자리 외 뒷자리를 *기호로 출력하고, MASKING_ENAME 열에는 사원 이름의 첫 글자만 보여 주고 나머지 글자 수만큼 *기호로 출력


SELECT 
    EMPNO,
    SUBSTR(TO_CHAR(EMPNO),1,2) || '**' AS MASKING_EMPNO,
    ENAME,
    SUBSTR(ENAME, 1,1) || '****' AS MASKING_ENAME
FROM EMP
WHERE LENGTH(ENAME) = 5;

출력 결과

7369	73**	SMITH	S****
7499	74**	ALLEN	A****
7566	75**	JONES	J****
7698	76**	BLAKE	B****
7782	77**	CLARK	C****
7788	77**	SCOTT	S****
7876	78**	ADAMS	A****
7900	79**	JAMES	J****

2. 사원들의 월 평균 근무일 수는 21.5, 하루 근무 시간을 8시간으로 보았을 때 사원들의 하루 급여와 시급을 계산하여 출력, 단, 하루 급여는 소수점 세 번째 자리에서 버리고, 시급은 두 번째 소수점에서 반올림


SELECT
	EMPNO,ENAME,SAL,
	TRUNC(SAL / 21.5, 2) AS DAY_PAY,
	ROUND(SAL / 21.5 / 8,1) AS TIME_PAY
FROM EMP;

출력 결과

EMPNO   ENAME   SAL   DAY_PAY   TIME_PAY
 7369	  SMITH   800	     37.2 	     4.7
 7499	  ALLEN  1600	    74.41	       9.3
 7521	   WARD  1250	    58.13	       7.3
 7566	  JONES  2975	   138.37	      17.3
 7654	 MARTIN  1250	    58.13	       7.3
 7698	  BLAKE  2850	   132.55	      16.6
 7782	  CLARK  2450	   113.95	      14.2
 7788	  SCOTT  3000	   139.53	      17.4
 7839	   KING  5000	   232.55	      29.1
 7844	 TURNER  1500	    69.76	       8.7
 7876	  ADAMS  1100	    51.16	       6.4
 7900	  JAMES   950	    44.18	       5.5
 7902	   FORD  3000	   139.53	      17.4
 7934	 MILLER  1300	    60.46	       7.6

사원들은 입사일을 기준으로 3개월이 지난 후 첫 월요일에 정직원이 될 때, 사원들이 정직원이 되는 날짜를 YYYY-MM-DD 형식으로 출력, 단, 추가 수당이 없는 사원의 추가 수당은 N/A로 출력


SELECT EMPNO, ENAME, HIREDATE,
			 TO_CHAR(NEXT_DAY(ADD_MONTHS(HIREDATE, 3),'월'),'YYYY-DD-MM') AS R_JOB,
			 NVL2(COMM,TO_CHAR(COMM) ,'N/A')
FROM EMP;

출력 결과

EMPNO   ENAME   HIREDATE     R_JOB   COMM
7369	SMITH	80/12/17	1981-23-03	N/A
7499	ALLEN	81/02/20	1981-25-05	300
7521	WARD	81/02/22	1981-25-05	500
7566	JONES	81/04/02	1981-06-07	N/A
7654	MARTIN	81/09/28	1982-04-01	1400
7698	BLAKE	81/05/01	1981-03-08	N/A
7782	CLARK	81/06/09	1981-14-09	N/A
7788	SCOTT	87/04/19	1987-20-07	N/A
7839	KING	81/11/17	1982-22-02	N/A
7844	TURNER	81/09/08	1981-14-12	0
7876	ADAMS	87/05/23	1987-24-08	N/A
7900	JAMES	81/12/03	1982-08-03	N/A
7902	FORD	81/12/03	1982-08-03	N/A
7934	MILLER	82/01/23	1982-26-04	N/A

모든 사원을 대상으로 직속 상관의 사원 번호를 다음과 같은 조건을 기준으로 변환해서 CHG_MGR 열에 출력


SELECT EMPNO, ENAME, MGR,
    CASE
        WHEN MGR IS NULL THEN '0000'
        WHEN SUBSTR(MGR,1,2) = '75' THEN '5555'
        WHEN SUBSTR(MGR,1,2) = '76' THEN '6666'
        WHEN SUBSTR(MGR,1,2) = '77' THEN '7777'
        WHEN SUBSTR(MGR,1,2) = '78' THEN '8888'
        ELSE TO_CHAR(MGR)
        END AS CHG_MGR
FROM EMP;

출력 결과

7369	SMITH	7902	7902
7499	ALLEN	7698	6666
7521	WARD	7698	6666
7566	JONES	7839	8888
7654	MARTIN	7698	6666
7698	BLAKE	7839	8888
7782	CLARK	7839	8888
7788	SCOTT	7566	5555
7839	KING		0000
7844	TURNER	7698	6666
7876	ADAMS	7788	7777
7900	JAMES	7698	6666
7902	FORD	7566	5555
7934	MILLER	7782	7777
728x90
반응형