[Oracle] DML(SELECE)_GROUP BY 연습문제

2022. 8. 29. 10:29·🚀 from error to study/DB

 

----- 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): 두 수를 나눈 나머지 값을 반환해 주는 함수

저작자표시 (새창열림)
'🚀 from error to study/DB' 카테고리의 다른 글
  • [오라클] 시퀀스의 NEXTVAL 값 수정하기
  • [ORACLE] 오류 보고 정리
  • [Oracle/정리] 오라클 생성 시 자료형, 제약조건
  • [Oracle] DML(SELECT)_JOIN 연습문제
천재강쥐
천재강쥐
  • 천재강쥐
    디버거도 버거다
    천재강쥐
  • 전체
    오늘
    어제
    • Category (467)
      • 진짜 너무 궁금한데 이걸 나만 몰라...? (0)
      • 💾 Portfolio (2)
      • 🐤 CodingTest (28)
        • Java (20)
        • ᕕ(ꐦ°᷄д°᷅)ᕗ❌ (5)
      • 🚀 from error to study (142)
        • AI (1)
        • Cloud (2)
        • DB (12)
        • Front-End (16)
        • Github (14)
        • Java (39)
        • Mac (7)
        • Normal (29)
        • Server (22)
      • 📘 certificate (44)
        • 📘 리눅스마스터1급 (1)
        • 📘⭕️ 정보처리기사 (40)
        • 📘⭕️ SQLD (3)
      • 📗 self-study (234)
        • 📗 inflearn (35)
        • 📗 생활코딩 (8)
        • 📗 KH정보교육원 당산지원 (190)
      • 🎨 Scoop the others (0)
        • 📖 Peeking into other people.. (0)
        • 🇫🇷 (0)
        • 📘⭕️ 한국사능력검정시험 심화 (11)
        • 오블완 (4)
  • 인기 글

  • hELLO· Designed By정상우.v4.10.1
천재강쥐
[Oracle] DML(SELECE)_GROUP BY 연습문제
상단으로

티스토리툴바