함수 (23.05.17)

·2023년 5월 18일
0

Coding Test

목록 보기
18/39
post-thumbnail

✏️ 문제 1

EMPLOYEE 테이블에서
부서코드가 D5, D9인 직원들 중에서 2004년도에 입사한 직원의
사번 사원명 부서코드 입사일 조회

  • 풀이
SELECT EMP_ID 사번, EMP_NAME 사원명, DEPT_CODE 부서코드, HIRE_DATE 입사일
FROM EMPLOYEE
WHERE DEPT_CODE IN ('D5', 'D9')
AND EXTRACT(YEAR FROM HIRE_DATE) = 2004;

✏️ 문제 2

EMPLOYEE 테이블에서
직원명, 입사일, 입사한 달의 근무일수 조회
단, 입사한 날도 근무일수에 포함해서 +1 할 것

  • 풀이
SELECT EMP_NAME 직원명, HIRE_DATE 입사일,
    LAST_DAY(HIRE_DATE) - HIRE_DATE + 1 "입사한 달의 근무일수"
FROM EMPLOYEE;

✏️ 문제 3

EMPLOYEE 테이블에서
직원명, 부서코드, 생년월일, 나이 조회
단, 생년월일은 주민번호에서 추출해서,
ㅇㅇ년 ㅇㅇ월 ㅇㅇ일로 출력되게 함.
나이는 주민번호에서 추출해서 날짜데이터로 변환한 다음, 계산.
(년도만을 이용한 나이 구하기, 만 나이 구하기 둘다 시도해보세요!)

  • 내 풀이 - 만 나이 구하기 실패... 😥
SELECT EMP_NAME 직원명, DEPT_CODE 부서코드,
    TO_CHAR(TO_DATE(SUBSTR(EMP_NO, 1, 6), 'RRMMDD'), 'RR"년 "MM"월 "DD"일"') 생년월일,
    EXTRACT(YEAR FROM SYSDATE) - EXTRACT(YEAR FROM(TO_DATE(SUBSTR(EMP_NO, 1, 6), 'RRMMDD'))) || '세' 나이
FROM EMPLOYEE;
  • 다른 풀이 - 년도만을 이용하여 나이 계산 1
SELECT EMP_NAME, DEPT_CODE,
    SUBSTR(EMP_NO, 1, 2) || '년 ' ||
    SUBSTR(EMP_NO, 3, 2) || '월 ' ||
    SUBSTR(EMP_NO, 5, 2) || '일' 생년월일,
    EXTRACT(YEAR FROM SYSDATE) -
    EXTRACT(YEAR FROM TO_DATE(SUBSTR(EMP_NO, 1, 6), 'RRMMDD')) 나이
FROM EMPLOYEE;
  • 다른 풀이 - 년도만을 이용하여 나이 계산 2
SELECT EMP_NAME, DEPT_CODE,
    TO_CHAR( TO_DATE( SUBSTR(EMP_NO, 1, 6), 'RRMMDD'), 'RR"년 "MM"월 "DD"일"') 생년월일,
    EXTRACT(YEAR FROM SYSDATE) -
    EXTRACT(YEAR FROM TO_DATE(SUBSTR(EMP_NO, 1, 6), 'RRMMDD')) 나이,
    FLOOR(MONTHS_BETWEEN(SYSDATE, TO_DATE(SUBSTR(EMP_NO, 1, 6), 'RRMMDD')) / 12) "만 나이"
FROM EMPLOYEE;
profile
풀스택 개발자 기록집 📁

0개의 댓글