# 문제풀이에 사용된 함수
= JOIN / CROSS JOIN / SELF JOIN / CONNECT BY / PRIOR / START WITH
- --문제1) Steven King의 부서명을 출력하라.
- SELECT
- E.FIRST_NAME,E.LAST_NAME,D.DEPARTMENT_NAME
- FROM EMPLOYEES E , DEPARTMENTS D
- WHERE e.department_id = D.DEPARTMENT_ID
- AND E.FIRST_NAME = 'Steven' AND E.LAST_NAME = 'King';
- --문제2) IT부서에서 근무하고 있는 사람들을 출력하라.
- SELECT
- *
- FROM EMPLOYEES E ,DEPARTMENTS D
- WHERE e.department_id = D.DEPARTMENT_ID
- AND D.DEPARTMENT_NAME = 'IT';
- --문제3) EMPLOYEES 테이블과 DEPARTMENTS 테이블을
- --Cartesian Product(모든 가능한 행들의 Join)하여
- --사원번호,이름,업무,부서번호,부서명,근무지를 출력하여라.
- SELECT
- E.EMPLOYEE_ID, E.FIRST_NAME, E.JOB_ID, E.DEPARTMENT_ID, D.DEPARTMENT_NAME, D.LOCATION_ID
- FROM EMPLOYEES E CROSS JOIN DEPARTMENTS D;
- --문제4) EMPLOYEES 테이블에서
- --사원번호,이름,업무, EMPLOYEES 테이블의 부서번호, DEPARTMENTS 테이블의 부서번호,부서명,근무지를 출력하여라.
- SELECT
- E.EMPLOYEE_ID,E.FIRST_NAME,E.JOB_ID,E.DEPARTMENT_ID,D.DEPARTMENT_ID,D.DEPARTMENT_NAME,D.LOCATION_ID
- FROM EMPLOYEES E , DEPARTMENTS D
- WHERE e.department_id = D.DEPARTMENT_ID;
- --문제5) EMPLOYEES 테이블과 DEPARTMENTS 테이블의 부서번호를 조인하고
- --SA_MAN 사원만의 사원번호,이름,급여,부서명,근무지를 출력하라.(Alias를 사용)
- SELECT
- E.EMPLOYEE_ID 사원번호,E.FIRST_NAME 이름,E.SALARY 급여,D.DEPARTMENT_NAME 부서명,D.LOCATION_ID 근무지
- FROM EMPLOYEES E , DEPARTMENTS D
- WHERE e.department_id = D.DEPARTMENT_ID
- AND E.JOB_ID = 'SA_MAN';
- --문제6) EMPLOYEES 테이블과 DEPARTMENTS 테이블에서 DEPARTMENTS 테이블에 있는 모든 자료를
- --사원번호,이름,업무, EMPLOYEES 테이블의 부서번호, DEPARTMENTS 테이블의 부서번호,부서명,근무지를 출력하여라
- SELECT
- E.EMPLOYEE_ID,E.FIRST_NAME,E.JOB_ID,E.DEPARTMENT_ID,D.DEPARTMENT_ID,D.DEPARTMENT_NAME,D.LOCATION_ID
- FROM EMPLOYEES E , DEPARTMENTS D
- WHERE e.department_id = D.DEPARTMENT_ID;
- --문제7) EMPLOYEES 테이블에서 Self join하여 관리자(매니저)를 출력하여라.
- SELECT
- A.EMPLOYEE_ID "사원번호",A.LAST_NAME "사원이름",A.MANAGER_ID "상사번호",B.EMPLOYEE_ID "상사번호",B.FIRST_NAME
- FROM EMPLOYEES A , EMPLOYEES B
- WHERE A.MANAGER_ID = B.EMPLOYEE_ID;
- --문제8) EMPLOYEES 테이블에서 left join하여 관리자(매니저)를 출력하고
- --매니저 아이디가 없는 사람은 배제하고 하향식으로 하며
- --급여는 역순으로 출력하라.
- SELECT
- A.EMPLOYEE_ID,A.FIRST_NAME,A.SALARY,A.MANAGER_ID
- ,B.EMPLOYEE_ID,B.FIRST_NAME
- FROM EMPLOYEES A, EMPLOYEES B
- WHERE A.MANAGER_ID = B.EMPLOYEE_ID(+)
- START WITH A.MANAGER_ID IS NOT NULL
- CONNECT BY A.MANAGER_ID = PRIOR A.EMPLOYEE_ID
- ORDER BY A.SALARY DESC;
- --문제9) EMPLOYEES 테이블에서 right join하여
- --관리자(매니저)가 108번 상향식으로 급여는 역순으로 출력하라.
- SELECT
- A.EMPLOYEE_ID, A.FIRST_NAME,A.SALARY, A.MANAGER_ID,
- B.EMPLOYEE_ID, B.FIRST_NAME
- FROM EMPLOYEES A , EMPLOYEES B
- WHERE A.MANAGER_ID(+) = B.EMPLOYEE_ID
- AND A.MANAGER_ID = '108'
- CONNECT BY PRIOR A.MANAGER_ID=A.EMPLOYEE_ID
- ORDER BY A.SALARY;
'오랜된 포스팅 > SQL Developer' 카테고리의 다른 글
SQL Developer 기본문제 풀이 SCOTT (+SELECT / WHERE) (0) | 2018.06.23 |
---|---|
SQL Developer 기본문제 풀이(+IN(SUBQUREY) ...) (0) | 2018.06.22 |
SQL Developer 기본문제 풀이(+GROUP BY / HAVING / AVG() ...) (0) | 2018.06.22 |
SQL Developer 기본문제 풀이(+LOWER() / UPPER() / CONCAT() / LENGTH()...) (0) | 2018.06.21 |
SQL Developer 기본문제 풀이(+ORDER BY / DESC) (0) | 2018.06.21 |