----- KH 계정 SELECT 기본 연습문제 -----
1. EMPLOYEE테이블의 고용일, 사원 이름, 월급 조회
SELECT HIRE_DATE
, EMP_NAME
, SALARY
FROM EMPLOYEE;
2. EMPLOYEE테이블에서 SAL_LEVEL이 S1인 사원의 이름, 월급, 고용일, 연락처 조회
SELECT EMP_NAME
, SALARY
, HIRE_DATE
, PHONE
FROM EMPLOYEE
WHERE SAL_LEVEL = 'S1';
3. EMPLOYEE테이블에서 이름, 연봉, 총수령액(보너스포함), 실수령액(총수령액 - (연봉 * 세금 3%)) 조회
SELECT EMP_NAME
, SALARY * 12 "연봉"
, (SALARY + (SALARY * NVL(BONUS, 0))) * 12 "총수령액"
, ((SALARY + (SALARY * NVL(BONUS, 0))) * 12) - (SALARY * 0.03) "실수령액"
FROM EMPLOYEE;
4. EMPLOYEE테이블에서 실수령액(3번 참고)이 5천만원 이상인 사원의 이름, 월급, 실수령액, 고용일 조회
SELECT EMP_NAME
, SALARY
, ((SALARY + (SALARY * NVL(BONUS, 0))) * 12) - (SALARY * 0.03) "실수령액"
, HIRE_DATE
FROM EMPLOYEE
WHERE ((SALARY + (SALARY * NVL(BONUS, 0))) * 12) - (SALARY * 0.03) >= 50000000;
5. EMPLOYEE테이블에서 사원명과 직원의 주민번호를 이용하여 생년, 생월, 생일 조회
SELECT EMP_NAME
, SUBSTR(EMP_NO, 1, 2) "생년"
, SUBSTR(EMP_NO, 3, 2) "생월"
, SUBSTR(EMP_NO, 5, 2) "생일"
FROM EMPLOYEE;
6. EMPLOYEE테이블에서 직원 명, 부서코드, 생년월일, 나이(만) 조회
(단, 생년월일은 주민번호에서 추출해서 00년 00월 00일로 출력되게 하며, 나이는 주민번호에서 날짜데이터로 변경 후 계산)
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, 2), 'RR')) "나이(만)"
FROM EMPLOYEE;
더보기
SELECT EXTRACT(YEAR FROM SYSDATE)
FROM DUAL;
-- 결과값: 2022
EXTRACT(YEAR FROM TO_DATE(SUBSTR(EMP_NO, 1, 2), 'RR'))
-- 1969/07/21의 경우 "1969"가 숫자형으로 출력됨
즉, 2022 - 1969 = 53으로 만 나이가 출력되는 꼴임
7. EMPLOYEE테이블에서 근무 년수가 20년 이상인 직원 정보 조회
SELECT *
FROM EMPLOYEE
WHERE EXTRACT(YEAR FROM SYSDATE) - EXTRACT(YEAR FROM HIRE_DATE) >= 20;
8. EMPLOYEE테이블에서 부서코드가 D5, D6, D9인 사원만 조회하되 D5면 총무부, D6면 기획부, D9면 영업부로 처리
(단, 부서코드 오름차순으로 정렬)
SELECT EMP_ID
, EMP_NAME
, EMP_NO
, EMAIL
, PHONE
, DECODE(DEPT_CODE, 'D5', '총무부', 'D6', '기획부', 'D9', '영업부') "부서명"
, JOB_CODE
, SAL_LEVEL
, SALARY
, BONUS
, MANAGER_ID
, HIRE_DATE
, ENT_DATE
, ENT_YN
FROM EMPLOYEE
WHERE DEPT_CODE IN ('D5', 'D6', 'D9');
9. EMPLOYEE테이블에서 사번이 홀수인 직원들의 정보 모두 조회
SELECT *
FROM EMPLOYEE
WHERE MOD(EMP_ID, 2) = 1;
더보기
<MOD>
- MODULER의 약자로 나머지를 구해 주는 함수
- MOD(NUMBER1, NUMBER2): 두 수를 나눈 나머지 값을 반환해 주는 함수