본문 바로가기
문제를 풀어보자

ORACLE) Do it! 오라클 6강 연습문제

by 휴일이 2022. 10. 20.

1) EMPNO 열에는 EMP 테이블에서 ENAME이 다섯글자 이상, 여섯글자 미만인 사원 정보만 출력

MASKING_EMPNO 열에는 EMPNO 앞 두자리와 뒷자리를 * 기호로 출력,

MASKING_ENAME 열에는 첫글자만 보여주고 나머지는 * 기호로 출력

 

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 AND LENGTH(ENAME)<6
;

 

결과

 

 

 

 

2) EMP 테이블에서 사원들의 월 평균 근무 일수는 21.5일, 하루 근무 시간은 8시간

사원들의 하루 급여(DAY_PAY)와 시급(TIME_PAY)를 계산하여 결과 출력

단, 하루 급여는 소수점 3번째 자리에서 버리고, 시급은 두 번째 소수점에서 반올림

 

 

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

 

결과

 

 

2) EMP 테이블에서 사람들은 입사일(HIRE_DATE)을 기준으로

3개월이 지난 후, 첫 월요일에 정직원이 됩니다

사원들이 정직원이 되는 날짜(R_JOB)를 YYYY-MM-DD 형식으로 출력하세요

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

 

 

SELECT EMPNO, ENAME,
HIREDATE,
TO_CHAR(NEXT_DAY(ADD_MONTHS(HIREDATE,3),'월요일'),'YYYY-MM-DD') AS R_JOB,
DECODE (COMM, NULL, 'N/Y', COMM) AS COMM
FROM EMP
;

 

 

결과

 

 

 

4)  EMP 테이블의 모든 사원을 대상으로

직속 상관의 사원 번호를 다음과 같은 기준으로 CHG_MGR 칼럼에 출력하세요

 

-사원 번호가 존재하지 않을 경우 0000

-사원번호 앞 두자리가 75면 5555

-76이면 6666

-77이면 7777

-78이면 8888

-그 외의 사원 번호는 본래 번호로 그대로 출력

 

 

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
;

 

 

결과

 

 

한 행의 타입을 바꾸면

그 열의 타입은 전부 같은 타입으로 해야하는 모양이다...

이건 좀 해맸음...

728x90