DB 학습일지

230804 - 1. SELECT 연습문제(같이 풀어보셈)

돌아온 개밥그릇 2023. 8. 4. 09:53

 

 

----- 일반 계정 SELECT 기본 연습문제 -----

테이블명: EMPLOYEE

이름: EMP_NAME

주민번호: EMP_NO

사번: EMP_ID

고용일: HIRE_DATE // 입사일로 봐도 됨

부서 코드: DEPT_CODE

급여(월): SALARY

보너스율: BONUS

연락처: PHONE

 


-- 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)) - (SALARY*0.03))*12
  FROM EMPLOYEE;


-- 4. EMPLOYEE테이블에서 실수령액(3번 참고)이 5천만원 이상인 사원의 이름, 월급, 실수령액, 고용일 조회
SELECT EMP_NAME, SALARY, HIRE_DATE
  FROM EMPLOYEE
 WHERE  (SALARY + (SALARY*NVL(BONUS,0)) - (SALARY*0.03))*12 >= 50000000 


-- 5. EMPLOYEE테이블에서 사원 명과 직원의 주민번호를 이용하여 생년, 생월, 생일 조회
SELECT 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) || '일' AS 생년월일, 
   (EXTRACT(YEAR FROM SYSDATE) - EXTRACT(YEAR FROM TO_DATE(SUBSTR(EMP_NO,1,2),'RR'))) AS 나이
  FROM EMPLOYEE;


-- 7. EMPLOYEE테이블에서 근무 년수가 20년 이상인 직원 정보 조회
SELECT EMP_NAME "사원명단"
     , HIRE_DATE "입사일"
     , FLOOR((SYSDATE - HIRE_DATE) / 365) "근무 년수" 
  FROM EMPLOYEE
 WHERE FLOOR ((SYSDATE - HIRE_DATE) / 365) >= 20; 


-- 8. EMPLOYEE테이블에서 부서코드가 D5, D6, D9인 사원만 조회하되 D5면 총무부, D6면 기획부, D9면 영업부로 처리
-- (단, 부서코드 오름차순으로 정렬)
SELECT EMP_NAME, EMP_ID, DECODE (DEPT_CODE, 'D5', 
        '총무부', 'D6', '기획부', 'D9', '영업부')
  FROM EMPLOYEE
 WHERE DEPT_CODE IN ('D5', 'D6', 'D9') 
ORDER BY DEPT_CODE ASC; 


-- 9. EMPLOYEE테이블에서 사번이 홀수인 직원들의 정보 모두 조회
SELECT *
  FROM EMPLOYEE 
 WHERE MOD(EMP_ID, 2) = 1; 

반응형