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
'코딩스터디' 카테고리의 다른 글
LEETCODE SQL : Group by (0) | 2025.03.11 |
---|---|
Leetcode SQL : Not boring Movies, Article Views (0) | 2025.03.05 |
SQL : 프로그래머스 GROUP BY 동명 동물 수 찾기, 고양이와 개는 몇마리 있을까? (0) | 2025.03.03 |
SQL : SUM, MAX, MIN 가격이 제일 비싼 식품의 정보 출력하기, 가격이 제일 비싼 식품의 정보 출력하기 (0) | 2025.02.26 |
[프로그래머스] 파이썬, 수 조작하기1 (0) | 2024.10.11 |