📝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
반응형
'LeetCode' 카테고리의 다른 글
[LeetCode] 577. Employee Bonus (0) | 2025.02.27 |
---|---|
[LeetCode] 511. Game Play Analysis 1 (0) | 2025.02.27 |
[LeetCode] 182. Duplicate Emails (0) | 2025.02.24 |
[LeetCode] 181. Employees Earning More Than Their Managers (0) | 2025.02.24 |
[LeetCode] 175. Combine Two Tables (4) | 2025.02.20 |