SQL 학습 6일차, 183. Customers Who Never Order (NULL, LEFT JOIN)
다양성과 방향성

여행으로 재미있게 살고 엑셀로 성장하는 삶

직무강화/SQL

SQL 학습 6일차, 183. Customers Who Never Order (NULL, LEFT JOIN)

LATI 라티 2024. 8. 22. 09:30
반응형
오늘도 출근 전 SQL 공부!
왠지.. 쉽게 풀 수 있을 것 같다는 생각이 들었지만
결과는.... 실패! 그래도 쿼리가 실행이 안되는 이유를 깨달았다.
 

1차 시도

 

SELECT customers.name as customers
FROM customers
JOIN orders ON customers.id = orders.customerid
GROUP BY customers.id
HAVING NOT IN orders.id

어떻게 풀어야 할까?
주문을 하지 않은 사람을 추출
JOIN으로 주문한 사람을 찾을 수 있음

원래 테이블에서 주문한 사람을 빼주면 되는데...

레프트 아우터 조인으로 주문이 없는 값은 NULL로 나오게 해서 찾으면 됨.
>>> 생각은 맞았는데 어떻게 구현해야 하는지 모름
 

 

 

2차 시도
결국 어떻게 해야 하는지는 알았는데 쿼리와 원리를 까먹어서 못푼 문제.

select
name as Customers
from Customers c1
left outer join Orders o1
on c1.id = o1.customerId where o1.id IS null


아... 맞다 NULL을 찾을 땐 ID = NULL이 아니라
IS NULL, NOT NULL로 찾아야 하는데.... 배운걸 까먹어서 ㅠㅠ

 

근데 확실히 느끼는 건, 이론도 중요하지만 결국 실무다!

해봐야지 더 많이 알 수 있고 해봐야 더 기억에 남는다.
조금씩 앞으로 나아가는 느낌이 든다.

물론, 초보적인 QUERY 지만 하나하나 혼자 이해하고 해결할 수 있는 역량을 키워나가는게 나름 재미있다.
반응형