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
'문제를 풀어보자' 카테고리의 다른 글
ORACLE) Do it! 오라클 9강 연습문제 (0) | 2022.10.21 |
---|---|
ORACLE) Do it! 오라클 8강 연습문제 (0) | 2022.10.20 |
JAVA) 자바의 정석 기초편 11-4 연습 문제(Comparator 정렬) (0) | 2022.10.14 |
JAVA) 자바의 정석 기초편 11-3 연습 문제(Comparable 정렬) (1) | 2022.10.13 |
JAVA) 자바의 정석 기초편 7-5 연습문제 풀이 (0) | 2022.10.09 |