본문 바로가기

[LeetCode] 175. Combine Two Tables

by qwee0328 2025. 2. 20.

📝175. Combine Two Tables

🔹 두 테이블 결합하기

Person 테이블에 있는 각 사람의 이름, 성, 도시, 주를 보고하는 솔루션을 작성하세요. personId의 주소가 Address 테이블에 없으면 대신 null을 보고합니다.
어떤 순서로든 결과 테이블을 반환합니다.

 

📝 문제 설명

LeetCode 175번 Combine Two Tables 문제는 두 개의 테이블을 결합하여 각 사람의 이름(First Name, Last Name), 거주 도시(City), 주(State)를 반환하는 SQL 쿼리를 작성하는 것입니다.

단, Person 테이블에 있는 모든 사람이 Address 테이블에 존재하는 것이 아니므로, LEFT JOIN을 사용하여 해당하는 주소가 없는 경우 NULL로 표시해야 합니다.

 

📊 테이블 구조

Person 테이블

Column Name Type
personId int
firstName varchar
lastName varchar

 

Address 테이블

Column Name Type
addressId int
personId int
city varchar
state varchar

 

 

💡 SQL 문제 해결 방법

이 문제는 LEFT JOIN을 사용하여 해결할 수 있습니다. LEFT JOIN을 활용하면 Person 테이블의 모든 데이터를 유지하면서 Address 테이블과 결합할 수 있습니다.

 

 

반응형

 

 

🖥️ SQL 풀이

   SELECT a.firstName
        , a.lastName
        , b.city
        , b.state
     FROM Person a
LEFT JOIN Address b
       ON a.personId = b.personId;

 

 

🔍 쿼리 분석

이 쿼리는 LEFT JOIN을 활용하여 Person 테이블과 Address 테이블을 personId 기준으로 연결합니다. 이를 통해 Person 테이블의 모든 데이터가 유지되며, Address 테이블에 매칭되는 데이터가 없으면 NULL로 반환됩니다.

  • 기본 개념: LEFT JOIN을 사용하면 왼쪽 테이블(Person)의 모든 데이터를 유지하면서 오른쪽 테이블(Address)의 데이터를 추가할 수 있습니다.
  • 일치 조건: ON a.personId = b.personId 조건을 사용하여 두 테이블을 연결합니다.
  • 필드 선택: firstName, lastName, city, state를 선택하여 결과를 출력합니다.
  • NULL 처리: 주소 정보가 없는 경우 citystateNULL 값으로 반환됩니다.

 

📌 실행 예제

📊 입력 데이터

Person 테이블

personId firstName lastName
1 Wang Allen
2 Alice Bob

 

Address 테이블

addressId personId city state
1 2 New York City New York
2 3 Leetcode California

 

쿼리 실행 결과

firstName lastName city state
Allen Wang Null Null
Bob Alice New York City New York

 

🎯 결론

이 문제를 통해 LEFT JOIN을 활용하여 두 개의 테이블을 결합하는 방법을 배울 수 있습니다.

LEFT JOIN을 사용하면 한쪽 테이블에 데이터가 없는 경우에도 다른 테이블의 정보를 유지할 수 있어 데이터 분석 및 조회 시 유용합니다.

또한, NULL 값이 발생하는 경우를 고려하는 것이 중요하며, 이를 적절히 처리해야 합니다. 실무에서도 고객 정보, 주문 내역 등의 데이터를 결합할 때 JOIN을 적절히 활용하는 것이 중요합니다.

 

 

 

더 많은 SQL 문제 풀이를 보고 싶다면 LeetCode SQL 문제 모음을 확인해보세요! 🚀

 

 

728x90
반응형