본문 바로가기

코딩스터디

LEETCODE : SQL - JOIN

 

1. Product Sales Analysis I

🔗 문제 링크: Product Sales Analysis I

문제 개요

  • Sales 테이블에는 제품 판매 정보가 저장되어 있음.
  • Product 테이블에는 product_id와 해당 제품명이 저장되어 있음.
  • 각 sale_id에 대해 제품명(product_name), 연도(year), 가격(price)을 출력해야 함.
  • 결과 순서는 중요하지 않음.

해결 방법

  • product_id를 기준으로 INNER JOIN을 사용하여 Sales와 Product를 연결.
  • 필요한 컬럼만 선택하여 출력.
SELECT
  p.product_name,
  s.year,
  s.price
FROM Sales AS s
INNER JOIN Product AS p
ON s.product_id = p.product_id;


2. Combine Two Tables

🔗 문제 링크: Combine Two Tables

문제 개요

  • Person 테이블에는 personId와 해당 개인의 성(lastName), 이름(firstName)이 저장되어 있음.
  • Address 테이블에는 personId에 해당하는 주소(city, state)가 저장되어 있음.
  • Person 테이블의 모든 사람을 포함해야 하며, 주소가 없는 경우 NULL을 출력해야 함.

해결 방법

  • Person 테이블이 기준이므로 LEFT OUTER JOIN을 사용.
  • 주소가 없는 경우 NULL이 출력되도록 설정.
SELECT
  p.firstName,
  p.lastName,
  a.city,
  a.state
FROM Person AS p
LEFT OUTER JOIN Address AS a
ON p.personId = a.personId;


3. Replace Employee ID with the Unique Identifier

🔗 문제 링크: Replace Employee ID with the Unique Identifier

문제 개요

  • Employees 테이블에는 직원의 id와 name이 저장되어 있음.
  • EmployeeUNI 테이블에는 id별로 unique_id가 저장될 수도 있음.
  • Employees 테이블의 모든 직원을 포함해야 하며, unique_id가 없는 경우 NULL을 출력해야 함.

해결 방법

  • Employees 테이블이 기준이므로 LEFT OUTER JOIN을 사용.
  • unique_id가 없는 경우 NULL이 나오도록 설정.
SELECT
  u.unique_id,
  e.name
FROM Employees AS e
LEFT OUTER JOIN EmployeeUNI AS u
ON e.id = u.id;


SQL JOIN 개념 정리

SQL에서 JOIN을 사용할 때, 두 테이블을 연결하기 위한 "다리 역할"을 하는 컬럼이 필요하다. 보통 **외래 키(Foreign Key)**가 이 역할을 한다.

1. INNER JOIN (교집합)

  • 양쪽 테이블에 공통된 값이 있어야 결합이 이루어짐.
  • 한쪽에만 있는 데이터는 결과에서 제외됨.
SELECT *
FROM A
INNER JOIN B
ON A.key = B.key;

2. LEFT OUTER JOIN (왼쪽 기준)

  • 왼쪽 테이블을 기준으로 모든 행을 유지하고, 오른쪽에 해당하는 값이 없으면 NULL로 채움.
  • 은행, 데이터 분석에서 자주 사용됨.
SELECT *
FROM A
LEFT OUTER JOIN B
ON A.key = B.key;

3. RIGHT OUTER JOIN (오른쪽 기준)

  • 오른쪽 테이블을 기준으로 모든 행을 유지하고, 왼쪽에 값이 없으면 NULL로 채움.
  • LEFT OUTER JOIN과 동일한 원리지만, 기준이 오른쪽 테이블이라는 차이점이 있음.
SELECT *
FROM A
RIGHT OUTER JOIN B
ON A.key = B.key;

4. FULL OUTER JOIN (합집합)

  • 양쪽 테이블의 데이터를 모두 포함하고, 한쪽에만 있는 값은 NULL로 채움.
  • LEFT OUTER JOIN과 RIGHT OUTER JOIN을 합친 것과 동일한 효과.
SELECT *
FROM A
FULL OUTER JOIN B
ON A.key = B.key;

JOIN 유형별 차이점 요약

JOIN 유형 설명 결과

INNER JOIN 두 테이블에 공통된 데이터만 결합 교집합
LEFT OUTER JOIN 왼쪽 테이블 기준, 오른쪽에 값 없으면 NULL 왼쪽 테이블 유지
RIGHT OUTER JOIN 오른쪽 테이블 기준, 왼쪽에 값 없으면 NULL 오른쪽 테이블 유지
FULL OUTER JOIN 양쪽 테이블 모두 포함, 없는 값은 NULL 합집합

정리

  • INNER JOIN은 공통된 값이 있는 행만 출력 → Product Sales Analysis I에서 사용
  • LEFT OUTER JOIN은 기준 테이블의 모든 행을 유지하고, 없는 값은 NULL → Combine Two Tables, Replace Employee ID with the Unique Identifier에서 사용
  • 은행 IT, 데이터 분석 실무에서는 LEFT OUTER JOIN이 가장 자주 사용됨.
  • FULL OUTER JOIN은 실무에서는 많이 사용되지 않지만, 데이터를 통합할 때 유용할 수 있음

 

 

 

728x90