코딩 연습장/데이터베이스(DB)

데이터 베이스 6장 연습문제

Do아 2021. 3. 17. 00:49
728x90

6장에 연습문제 풀기

--1번

--EMPNO열에는 EMP 테이블에서 사원 이름ENAME이 다섯 글자 이상이며 여섯 글자 미만인 사원 정보를 출력합니다. MASKING_EMPNO열에는

--사원번호 앞 두자리외 뒷자리를 * 기호로 출력합니다. 그리고 MASKING_ENAME열에는 사원 이름의 첫 글자만 보여주고 나머지 글자수만큼 * 기호로 출력하세요

SELECT EMPNO, SUBSTR(EMPNO,1,2) || '**' AS MASKING_EMPNO, ENAME,SUBSTR(ENAME,1,1) || '****' AS MASKING_ENAME

FROM EMP

WHERE LENGTH(ENAME)>=5 AND LENGTH(ENAME)<6;

--문제2

--EMP테이블에서 사원들의 월 평균 근무일 수는 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;

--문제3

--EMP테이블에서 사원들은 입사일을 기준으로 3개월이 지난 후 첫 월요일에 정직원이 됩니다.

--사원들이 정직원이 되는 날짜를 YYYY-MM-DD형식으로 오른쪽과 같이 출력해주세요

--단 추가 수당이 없는 사원의 추가 수당은 N/A로 출력하세요

SELECT EMPNO, ENAME, TO_CHAR(HIREDATE,'YYYY-MM-DD'),

TO_CHAR(NEXT_DAY(ADD_MONTHS(HIREDATE,3),2),'YYYY-MM-DD') AS R_JOB,

NVL2(COMM,TO_CHAR(COMM),'N/A')

FROM EMP;

--문제4

--EMP테이블의 모든 사원을 대상으로 직속 상관의 사원 번호를 다음과 같은 조건을 기준으로 변환해서 CHG_MGR열에 출력하세요.

--직속상관의 사원 번호가 존재하지 않을 경우:0000

--직속상관의 사원 번호 앞 두자리가 75일 경우 :5555

--직속상관의 사원 번호 앞 두자리가 76일 경우 :6666

--직속상관의 사원 번호 앞 두자리가 77일 경우 :7777

--직속상관의 사원 번호 앞 두자리가 78일 경우 :8888

--그 외 직속 상관 사원 번호의 경우: 본래 직속 상관의 사원 번호 그대로 출력

SELECT EMPNO, ENAME, MGR,

CASE WHEN SUBSTR(MGR,1,2) 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;

대체적으로 쉬움 CASE 와 DECODE문 좀 더 살펴 보기

728x90