본문 바로가기

[LeetCode] 183. Customers Who Never Order

by qwee0328 2025. 2. 25.

📝183. Customers Who Never Order

🔹 아무것도 주문하지 않은 고객

아무것도 주문하지 않은 모든 고객을 찾는 솔루션을 작성하세요.
어떤 순서로든 결과 테이블을 반환합니다.

 

📝 문제 설명

LeetCode 183번 Customers Who Never Order 문제는 주문을 한 번도 하지 않은 고객을 찾는 SQL 쿼리를 작성하는 문제입니다.

즉, Customers 테이블에는 존재하지만 Orders 테이블에는 없는 고객을 찾아야 합니다. 이를 위해 조인(Join) 연산과 NULL 값 필터링을 적절히 활용해야 합니다.

 

📊 테이블 구조

Customers 테이블

Column Name Type
id int
name varchar

 

Orders 테이블

Column Name Type
id int
customerId int

 

 

💡 SQL 문제 해결 방법

이 문제는 LEFT JOIN과 WHERE 조건을 활용하여 해결할 수 있습니다. Customers 테이블을 기준으로 Orders 테이블과 LEFT JOIN을 수행한 후, Orders 테이블에 대응하는 주문이 없는 경우만 필터링하면 됩니다.

 

 

728x90

 

 

🖥️ SQL 풀이

SELECT a.name AS Customers
  FROM Customers a
  LEFT JOIN Orders b
    ON a.id = b.customerId
 WHERE b.id IS NULL

 

 

🔍 쿼리 분석

  • LEFT JOIN : Customers 테이블의 모든 행을 유지하면서, Orders 테이블에서 매칭되는 데이터가 있으면 결합합니다.
  • WHERE b.id IS NULL : Orders 테이블에서 일치하는 주문이 없는 경우(b.id가 NULL)만 결과로 반환합니다.
  • 출력 컬럼 : 주문하지 않은 고객(Customers 테이블의 name 컬럼)만 반환합니다.
  •  

 

📌 실행 예제

📊 입력 데이터

Customers 테이블

id name
1 Joe
2 Henry
3 Sam
4 Max

 

Orders 테이블

id customerId
1 3
2 1

 

쿼리 실행 결과

Employee
Henry
Max
  • Sam과 Joe는 Orders 테이블에 있으므로 제외됩니다.

 

🎯 결론

이 문제를 통해 LEFT JOIN과 NULL 값을 활용한 데이터 필터링 방법을 배울 수 있습니다.

실무에서도 주문하지 않은 고객 리스트, 가입했지만 활동하지 않은 사용자 목록, 로그인하지 않은 회원 조회 등 다양한 시나리오에서 동일한 패턴을 활용할 수 있습니다. 🚀

 

 

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

728x90
반응형