마케터를 위한 SQL 무료 공부 - LeetCode

실무 감각을 익히기에 좋은 입문용 8문제 선정

by 애슐
SQL-thumbnail.png

모든 마케터에게 SQL이 필요한 것은 아니지만, CRM 또는 세일즈 데이터를 다룰 일이 꽤 있을 프로덕트 마케터, 소셜 미디어 트랙킹이 생명인 퍼포먼스 마케터의 경우 SQL이 종종 필요한 경우가 있다. 특히 리포팅을 준비해야 하는데 데이터 팀의 도움을 기다리기에 일정이 타이트할 때, SQL 쿼리를 쓸 수 있다면 데이터를 더욱 효율적으로 추출할 수 있다. 마케터로 일하면서 종종 마주치는 질문들은 사실 SQL로 데이터를 간단히 추출할 수 있다.

- 지난 달 캠페인에서 가장 잘 팔린 제품

- 최근 30일 동안 몇 명의 유저가 활동했는가?

- 구매 이정 중 이탈한 고객은 누구인가?


다른 프로그래밍 언어에 비하면 SQL은 좀더 가볍고 마케터 입장에서 실무에 쓰일 일이 더 많기 때문에, 개인적으로는 굳이 비싼 수업이나 부트캠프에 등록하지 않고 더 저렴하게 온라인 코스 또는 심지어 무료로도 충분히 연습할 소스가 많이 있다고 생각한다. 좋은 소식은, SQL은 비싼 수업이나 부트캠프에 등록하지 않아도 충분히 연습할 수 있다는 점이다. 특히 LeetCode에서는 SQL 문제를 무료로 풀 수 있고, 실무에서 마주할 법한 데이터 문제들을 다루고 있다.


나는 한창 SQL을 집중적으로 공부하던 시기에 풀타임으로 일하고 있었기 때문에 하루에 15-20분 정도만 투자해 매일 한 문제씩 푸는 방식으로 학습했다. 이중, 마케터에게 실질적으로 도움이 될 만한 문제 8가지를 골라보았다. 대부분 난이도는 Easy-Medium 수준이지만, 쿼리의 본질은 충분히 실무에 적용 가능할 것이라고 생각한다.
(참고로, LeetCode의 문제는 언제든 유료로 전환될 수 있다. 이 글을 작성하는 2025년 7월 기준으로는 모두 무료이다.)


아래 문제들에 대해 1) 연습 포인트 - 무엇을 배울 수 있는지, 2) 내가 실수했던 부분, 3) 마케팅 관점에서 왜 중요한지를 정리했다.


1. List the Products Ordered in a Period

연습 포인트: WHERE, GROUP BY, COUNT(), 날짜 필터링

실수: 초보적인 실수인 DISTINCT 를 빼먹어서 중복 결과가 나왔다.

마케팅 관점: 여름 시즌 프로모션 기간 동안 어떤 제품이 팔렸는지를 파악하고 싶다면, 이 쿼리에 쓰인 원리가 가장 베이직한 스킬이라고 할 수 있다.


2. User Activity for the Past 30 Days I

연습 포인트: DATE_SUB(), 날짜 필터링, GROUP BY

실수: ORDER BY DESC와 LIMIT 30을 썼는데, 쿼리 순서에서 오류가 났다. SQL은 쿼리 작동 순서가 순차적이지 않다는 점을 명심할 것.

마케팅 관점: DAU(Daily Active Users) 분석에 활용할 수 있다. 앱이나 웹사이트 마케팅을 한다면 필수적인 쿼리 구조이다.


3. Tree Node

연습 포인트: CASE WHEN, self-join, 계층 구조 이해

실수: 처음엔 self-join만으로 풀려 했는데, CASE WHEN을 함께 쓰는 게 훨씬 단순했다.

마케팅 관점: Brand → Product Line → 광고로 이어지는 다층 구조에서 각 병목 현상을 파악하는 데에 유용하다.


4. Replace Employee ID With The Unique Identifier

연습 포인트: JOIN, 누락된 데이터 처리

마케팅 관점: 고객 ID와 광고 플랫폼 ID를 매칭하는 작업과 유사하다. 다양한 데이터 소스를 연결할 때 이런 쿼리를 쓰게 된다.


5. Department Top Three Salaries

연습 포인트: DENSE_RANK(), PARTITION BY

실수: LIMIT 3을 썼다가 전체 상위 3개만 나와서 틀렸다. 문제 조건에 따라 RANK()와 DENSE_RANK() 중 무엇을 써야 할지도 주의해야 한다.

마케팅 관점: 광고의 ROAS를 비교하기 위해 캠페인별 수익을 순위별로 나열할 때 필요한 구조다.


6. Customers Who Never Order

연습 포인트: LEFT JOIN, IS NULL

마케팅 관점: 리타겟팅 캠페인, 사용자 이탈 분석에 쓰이기 좋은 구조이다.


7. Human Traffic of Stadium

연습 포인트: self-join을 여러 번 활용하거나, ROW_NUMBER()

실수: self-join 쿼리를 여러 줄 잘 짜놓고 SELECT 절에서 엉뚱한 컬럼을 불러오는 바람에 최종 결과가 틀어졌다.

마케팅 관점: 웹사이트 트래픽이 집중되는 피크 시간대를 분석할 때 유용하다.


8. Project Employees I

연습 포인트: AVG(), GROUP BY

마케팅 관점: 평균 캠페인 예산을 구해서 자원 배분에 참고할 수 있다. 쿼리 자체는 간단하지만 실용적이다.


마무리

SQL은 데이터 분석가와 마케터를 연결하는 도구다. 모든 회사가 마케터에게 SQL 접근 권한을 주는 건 아니지만, 리트코드 문제를 풀면서 비즈니스 문제를 어떻게 쪼개서 분석해야 하는지 감을 잡는 데에 큰 도움이 되었다. 이미 SQL에 익숙하다면 이 문제들은 비교적 쉬울 수 있다. 그렇다면 LeetCode에서 Medium~Hard 문제로 난이도를 높여가며 계속 도전해보는 것도 좋다.

추가로, 나는 Notion을 활용해 학습 과정을 트랙킹했는데 리트코드뿐 아니라 다른 문제 은행을 풀더라도 트랙킹하는 과정을 꼭 생략하지 않기를 추천한다. 문제 링크, 풀이 여부, 실수한 포인트, 마케팅 인사이트 등을 정리해서 다시 복습할 수 있게 해두었다. 결국 틀린 문제는 계속 틀리긴 하지만 - 다시 틀리지 않을 때까지 계속 복습해 보는 것으로.


스도쿠 문제 푸는 느낌으로 하루 15분씩만 연습해보면, 생각보다 빠르게 SQL 쿼리에 익숙해질 수 있을 것이다.

keyword
작가의 이전글한국 커머스 시장의 양강 구조 (2) 쿠팡