데이터 분석 기술 블로그

Customer Who Visited but Did Not Make Any Transactions _ Easy. leetcode * 본문

SQL/문제풀이

Customer Who Visited but Did Not Make Any Transactions _ Easy. leetcode *

데이터분석가 이채은 2024. 9. 15. 09:00

 

Solution

SELECT Visits.customer_id, COUNT(*) AS count_no_trans
FROM Visits
LEFT JOIN Transactions
ON Visits.visit_id = Transactions.visit_id
WHERE Transactions.transaction_id IS NULL
GROUP BY Visits.customer_id;

 

처음 생각은 이랬다. 

먼저 Visits 테이블과 Transaction 테이블을 매핑해서 Visits에서 transaction_id가 null인 값을 COUNT 하자. 그러면 Visits가 메인이고 거기에 Transactions에 있는 데이터가 매핑되어야 하므로 LEFT JOIN을 사용하고 visit_id로 매핑하면 된다고 생각했다.

 

그리고 맨 처음에는 COUNT(*) 대신 COUNT(Transactions.transaction_id IS NULL)을 사용했는데 COUNT() 함수NULL 값을 세지 않는다는 것을 알았다. 그렇기 때문에 WHERE 절을 사용해야 한다.