SQL - 조인(Join)

2024. 7. 15. 15:12·코딩테스트연습/SQL_프로그래머스

1) 동등 조인


    
sql
-- 동등 조인(Inner Join)
SELECT TO_CHAR(e.hire_date, 'MM'), SUM(j.max_salary)
FROM EMPLOYEES E, JOBS J
WHERE (E.JOB_ID = J.JOB_ID)
GROUP BY TO_CHAR(e.hire_date, 'MM');
-- ANSI 조인
SELECT TO_CHAR(e.hire_date, 'MM'), SUM(j.max_salary)
FROM EMPLOYEES E INNER JOIN JOBS J ON (E.JOB_ID = J.JOB_ID)
GROUP BY TO_CHAR(e.hire_date, 'MM');
-- 예제
SELECT A.EMPLOYEE_ID, A.DEPARTMENT_ID, B.DEPARTMENT_NAME,
       C.LOCATION_ID, C.CITY
FROM EMPLOYEES A, DEPARTMENTS B, LOCATIONS C
WHERE A.DEPARTMENT_ID = B.DEPARTMENT_ID 
    AND B.LOCATION_ID = C.LOCATION_ID;
-- HR 스키마의 모든 테이블을 JOIN하기
-- 조인 조건에 따라 결과값이 다르게 출력
SELECT * 
FROM EMPLOYEES e, DEPARTMENTS d, LOCATIONS l, COUNTRIES c,
     REGIONS r, JOB_HISTORY j, JOBS j2
WHERE (e.department_id = d.department_id)
    AND (d.location_id = l.location_id)
    AND (l.country_id = c.country_id)
    AND (r.region_id = c.region_id)
    AND (j.department_id = e.department_id)
    AND (j.job_id = j2.job_id);

 

2) 외부 조인


    
sql
-- LEFT JOIN, RIGHT JOIN, FULL JOIN
SELECT * FROM EMPLOYEES e, DEPARTMENTS d
WHERE (e.department_id(+) = d.department_id);
SELECT * FROM EMPLOYEES e RIGHT OUTER JOIN DEPARTMENTS d
         ON (e.department_id = d.department_id);  -- 위 조인과 동일한 결과
SELECT * FROM EMPLOYEES e FULL JOIN DEPARTMENTS d -- FULL OUTER JOIN
         ON (e.department_id = d.department_id);  -- OUTER 키워드 생략 가능

 

3) 자체 조인


    
sql
-- 예제 employees 테이블을 자체 조인하여 직원별 담당 매니저가 누구인지 조회
SELECT A.EMPLOYEE_ID, A.FIRST_NAME, A.LAST_NAME, A.MANAGER_ID,
       B.FIRST_NAME || ' ' || B.LAST_NAME MANAGER_NAME
FROM EMPLOYEES A, EMPLOYEES B
WHERE A.MANAGER_ID = B.EMPLOYEE_ID
ORDER BY A.EMPLOYEE_ID;

 

4) 집합 연산자


    
sql
--- 4) 집합 연산자: 집합으로 연결하기
-- UNION, UNION ALL, INTERSECT, MINUS
-- 예제 6-4
SELECT DEPARTMENT_ID FROM EMPLOYEES
UNION
SELECT DEPARTMENT_ID FROM DEPARTMENTS;
-- 예제
SELECT DEPARTMENT_ID FROM EMPLOYEES
UNION ALL
SELECT DEPARTMENT_ID FROM DEPARTMENTS
ORDER BY DEPARTMENT_ID;
-- UNION ALL에서 WHERE절을 사용하기
SELECT DEPARTMENT_ID FROM EMPLOYEES
WHERE department_id > 100
UNION ALL
SELECT DEPARTMENT_ID FROM DEPARTMENTS
WHERE department_id > 200
ORDER BY 1;
-- 예제
SELECT DEPARTMENT_ID FROM EMPLOYEES
INTERSECT
SELECT DEPARTMENT_ID FROM DEPARTMENTS
ORDER BY DEPARTMENT_ID;
-- 예제
SELECT DEPARTMENT_ID FROM DEPARTMENTS
MINUS
SELECT DEPARTMENT_ID FROM EMPLOYEES;
(SELECT SALARY, LAST_NAME FROM EMPLOYEES
UNION
SELECT MANAGER_ID,DEPARTMENT_NAME FROM DEPARTMENTS)
MINUS
SELECT MIN_SALARY, JOB_ID FROM JOBS;
-- 예제
SELECT EMPLOYEE_ID FROM EMPLOYEES
MINUS
SELECT EMPLOYEE_ID FROM JOB_HISTORY;

 

'코딩테스트연습 > SQL_프로그래머스' 카테고리의 다른 글

역순 정렬하기  (0) 2024.11.07
SQL - INSERT / UPDATE / DELETE  (2) 2024.07.15
SQL - 서브쿼리  (2) 2024.07.15
SQL - 내장 함수  (0) 2024.07.15
SQL - SELECT문  (0) 2024.07.15
'코딩테스트연습/SQL_프로그래머스' 카테고리의 다른 글
  • SQL - INSERT / UPDATE / DELETE
  • SQL - 서브쿼리
  • SQL - 내장 함수
  • SQL - SELECT문
분석가 황규진
분석가 황규진
공공기관 위험평가관련 부서에서 근무하고 있습니다.
글쓰기 관리
분석가 황규진
HGJ's Insight
홈
|
로그인
  • 전체 글 574
    • 개인 활동(일상) 4
      • 독서 2
      • 근황 공유 1
      • 업무 관련 1
    • 개인 활동(공부) 59
      • Tableau Bootcamp 10
      • 금융 공부 11
      • 직무 공부 26
      • 강의 12
    • 개인프로젝트 4
      • 신용카드 연체 평가 모델 0
      • 대출 승인 여부 예측 모델 4
    • 자격증 7
      • 빅데이터분석기사 1
      • 정보처리기사 1
      • 경영정보시각화 1
      • SQL개발자(SQLD) 1
      • 데이터 분석 준전문가(ADsP) 1
      • 통계적품질관리(SPC) 1
      • AICE Associate 1
    • 코드 정리 11
      • 코드 정리 - Tistory 8
      • 코드 정리 - Python 3
    • 코딩테스트연습 116
      • SQL_프로그래머스 116
    • 취업사관학교 9기 199
      • 모닝스쿨 54
      • 스스로 모닝스쿨 125
      • 직무 스터디 20
      • 반성과 다짐 0
    • 빅데이터 분석가 양성과정 173
      • Python 88
      • Python - 머신러닝 26
      • Python - 딥러닝 31
      • PyQt 4
      • JavaScript 10
      • MySQL 13
      • Node.js 1
hELLO· Designed By정상우.v4.6.1
분석가 황규진
SQL - 조인(Join)
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.