[오라클로 배우는 데이터베이스 입문] 6.5 연습문제

jychan99·2023년 7월 6일
0

Q1. EMPNO열에는 EMP테이블에서 사원이름이 5글자이상, 6글자 미만인 사원정보 출력, MASKING_EMPNO열에는 사원번호 앞두자리외 뒷자리를 *로 출력, MASKING_ENAME열에는 사원이름의 첫글자만 보여주고 나머지글자수만큼 *로 출력하는 SQL문은?

A

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

Q2. EMP테이블에서 사원들의 월평균 근무일수는 21.5일이다. 하루 근무 시간을 8시간으로 보았을 때 사원들의 하루급여와 시급을 계산하여 결과를 출력하는 SQL문은? 단, 하루급여는 소수점 세번째 자리에서 버리고, 시급은 소수점 두번째 자리에서 반올림하라.

A

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

Q3. EMP테이블에서 사원들은 입사일 기준으로 3개월 후 첫 월요일에 정직원이 된다. 사원들이 정직원이 되는 날짜를 YYYY-MM-DD형식으로 출력하는 SQL문은? 단, 추가수당이 없는 사언의 추가수당은 N/A로 출력하라.

A

SELECT EMPNO, ENAME, TO_CHAR(HIREDATE,'YYYY/MM/DD') as HIREDATE, 
SUBSTR(NEXT_DAY(ADD_MONTHS(HIREDATE,3),'월요일'),1,10) as R_JOB, 
NVL(TO_CHAR(COMM),'N/A') as COMM
FROM EMP;

Q4. EMP테이블의 모든 사원을 대상으로 직속 상관의 사원 번호를 다음과 같은 조건을 기준으로 변환해서 출력하는 SQL을 작성하시오.

  • 직속 상관의 사원 번호가 존재하지 않을 경우 : 0000
  • 직속 상관의 사원 번호 앞 두 자리가 75인 경우 : 5555
  • 직속 상관의 사원 번호 앞 두 자리가 76인 경우 : 6666
  • 직속 상관의 사원 번호 앞 두 자리가 77인 경우 : 7777
  • 직속 상관의 사원 번호 앞 두 자리가 75인 경우 : 8888
  • 그 외 직속 상관 사원 번호의 경우 : 본래 직속 상관의 사원 번호 그대로 출력

A

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 CGH_MGR
FROM EMP;
profile
내가 지금 두려워 하고 있는 일이 바로 내가 지금 해야 할 일이다. 🐥

0개의 댓글