[Oracle]오라클 문제만들기 숙제

ORACLE 연습용 문제 만들기 숙제

  • 강사님께서 우리가 풀 함수, 서브쿼리, 조인 문제 10가지를 만들어 오라고 하셔서 만들어 봤다.
  • 데이터는 강사님이 주신 파일이며, 아마 추측상 mysql에서 제공하는 데이터에서 아주 소량의 데이터만 가져와 만드신 것 같다.
  • 사원(EMP), 부서(DEPT), 월급등급(SALGRADE) 이렇게 세 가지 테이블이 주어졌다.

Function

  1. 관리자가 없는 사원의 직책명(JOB)과 그 길이를 출력하시오.

    SELECT JOB, LENGTH(JOB) FROM EMP WHERE MGR IS NULL;
    
  2. 사원테이블에서 사원이름과 사원이 현재까지 근무한 년수(소수점 없이 반올림)를 출력하고 ‘년’을 붙여서 출력하시오.

    SELECT ENAME, ROUND((SYSDATE- HIREDATE)/12/30)||'년' FROM EMP;
    
  3. 통장이 털렸다. 다음 ‘내 통장 잔고는 1357820’ 이라는 문장을 ‘내 잔고는 0원’으로 만들어 출력하시오.

    SELECT RTRIM('내 통장 잔고는 1357820', '0123456789')||'0원' FROM DUAL;
    
  4. 영어를 못읽는 사람을 위하여 직책명(JOB)을 한글로 바꿔주자. 사원이름, 직책명(JOB), 직책명(번역된) 을 출력해주자.

    • SALESMAN : 영업사원, PRESIDENT : 사장, MANAGER : 관리자, CLERK : 평사원, ALNALYST : 분석가
    SELECT ENAME, JOB, 
    CASE WHEN JOB = 'SALESMAN' THEN '영업사원' WHEN JOB = 'PRESIDENT' THEN '사장' 
    WHEN JOB = 'MANAGER' THEN '관리자' WHEN JOB = 'CLERK' THEN '평사원' ELSE '분석가' END FROM EMP;
    

Sub Query

  1. 전체 사원 중, 이름에 ‘O’가 들어가는 사원들의 평균 월급 보다 더 많은 월급을 받는 사원들의 이름, 월급, 직책명(JOB)을 출력하시오.

    SELECT ENAME, SAL, JOB
    FROM EMP
    WHERE SAL > (SELECT AVG(SAL) FROM EMP WHERE ENAME LIKE '%O%');
    
  2. NEW YORK에서 근무하는 사원들의 이름을 출력하시오.

    SELECT ENAME
    FROM EMP
    WHERE DEPTNO = (SELECT DEPTNO FROM DEPT WHERE LOC = 'NEW YORK');
    
  3. 전체 사원 중, 부서명이 RESEARCH 인 사원 중 가장 적은 월급을 받는 사원보다 더 많은 월급을 받는 사원들의 이름, 월급 출력하시오.

    SELECT ENAME, SAL
    FROM EMP
    WHERE SAL > ANY(SELECT SAL FROM EMP WHERE DEPTNO = (SELECT DEPTNO FROM DEPT WHERE DNAME='RESEARCH' ))
    

JOIN

  1. 사원들의 이름, 일하는지역을 출력하자.

    1. SELECT E.ENAME, D.LOC
      FROM EMP E, DEPT D
      WHERE E.DEPTNO = D.DEPTNO;
      
    2. SELECT ENAME, LOC
      FROM EMP JOIN DEPT USING(DEPTNO);
      
    3. SELECT E.ENAME, D.LOC
      FROM EMP E INNER JOIN DEPT D ON(E.DEPTNO=D.DEPTNO);
      
  2. 사원번호가 7521인 사원의 사원이름, 부서이름, 지역, 월급, 해당급여등급의 최고금액(HISAL)을 출력하자.

    1. SELECT ENAME, DNAME, LOC, SAL, HISAL
      FROM EMP JOIN DEPT USING(DEPTNO) JOIN SALGRADE ON (SAL BETWEEN LOSAL AND HISAL)
      WHERE EMPNO = 7521;
      
    2. SELECT E.ENAME, D.DNAME, D.LOC, E.SAL, S.HISAL
      FROM EMP E, DEPT D, SALGRADE S
      WHERE E.DEPTNO = D.DEPTNO AND E.SAL BETWEEN S.LOSAL AND S.HISAL AND E.EMPNO=7521;
      
    3. SELECT E.ENAME, D.DNAME, D.LOC, E.SAL, S.HISAL
      FROM (SELECT * FROM EMP WHERE EMPNO = 7521) E INNER JOIN DEPT D ON E.DEPTNO = D.DEPTNO 
      INNER JOIN SALGRADE S ON (E.SAL BETWEEN S.LOSAL AND S.HISAL);
      
  3. 위치, 각 위치의 사원수, 최대 월급 출력

    1. SELECT D.LOC, COUNT(*), MAX(E.SAL)
      FROM EMP E INNER JOIN DEPT D ON E.DEPTNO = D.DEPTNO
      GROUP BY D.LOC;
      
    2. SELECT LOC, COUNT(*), MAX(SAL)
      FROM EMP JOIN DEPT USING(DEPTNO)
      GROUP BY LOC;
      
    3. SELECT D.LOC, COUNT(*), MAX(E.SAL) 
      FROM EMP E, DEPT D
      WHERE E.DEPTNO = D.DEPTNO 
      GROUP BY D.LOC;
      

2022

[web]jQuery 복습 3

1 분 소요

[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!

[web]jQuery 복습 2

13 분 소요

[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!

[web]jQuery 복습 1

14 분 소요

[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!

[web]JavaScript 정리4

5 분 소요

[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!

[web]JavaScript 정리3

10 분 소요

[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!

[web]JavaScript 정리2

7 분 소요

[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!

[web]JavaScript 정리1

8 분 소요

[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!

[web]CSS 기초 정리

11 분 소요

[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!

[web]HTML 기초 정리

8 분 소요

[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!

[Pandas]pandas 연습

3 분 소요

[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!

맨 위로 이동 ↑

2021

[Python기초]module

1 분 소요

[Noitce] 고쳐야하거나 틀린 것이 있으면 말씀해주세요!

맨 위로 이동 ↑