[엑셀보다 더 쉬운 SQL] 1주차 시작하는 마음

신입 마케터의 도전

요즘 마케팅과 뗄레야 뗄 수 없는 단어 '데이터'.

우리 회사에서는 카페 마케팅을 하다 보니 네이버 통계 툴에 의존하는데, 이 데이터가 상당히 러프해서 실무를 할 때 크게 도움이 되지 않는 경우가 많다. 성과측정이 제대로 안 된달까. 왜 성공했고, 왜 실패했는지 정확한 분석이 안 되니까 다같이 우왕좌왕...😵 쳐내기 식 업무로 인한 리소스 낭비가 크다.

물론 그 덕분에 카페 댓글이나 게시글 하나하나 읽어보면서 유저를 섬세하게 관찰하는 습관이 생겼지만, 직관만으로 부족하다는 건 누구나 다 아는 사실 아니겠는가. 결국 9개월 차 신입 마케터인 나는 자체 앱/웹 사이트를 보유하여 고객의 행동 트래킹이 가능한 곳으로 이직을 준비 중이고, 마케터로서 그에 걸맞는 능력을 갖추기 위해 SQL 공부를 시작한다.

스파르타코딩클럽을 선택한 이유

  1. 마케팅 실무에 바로 써먹을 수 있는 기술 갖추기
  2. 재밌게 공부하기

두 가지가 가장 중요했다.

IT대학 출신이라 학부에서 기본 CS 지식을 익혔고, 데이터베이스 수업을 수강한 경험이 있어서 다시 코딩 비스무리한 걸 공부하는 데 대한 두려움은 1도 없지만 그래도 나라는 사람한테는 재밌게 공부하는 게 두 번째로 중요한 조건이었다. 학부 때 경험에 의한ㅋㅋㅋㅋ 어렵게 말하는 교수님 수업은 따라가기 힘들었다...

그리고 취준이라는 관문을 한 번 넘고나니 자격증이 그닥 실무 능력을 증명하지 못한다는 걸 느껴서 다른 방식으로 증명하고 싶었다. 지금처럼 공부 과정을 기록으로 남긴다든지 좀 더 믿음이 가는 방식으로 말이다.

스파르타코딩클럽의 [엑셀보다 더 쉬운 SQL]은 광고 카피에 따르면 딱 내가 원하는 바를 충족하는 강의였다. 마케터나 기획자가 알아야 하는 실무 SQL을 위주로 재밌게 진행하는 수업처럼 보였다. 다른 수강생들과 진도율을 비교하는 게임 형식의 웹사이트 UX/UI는 물론, 쉽게 설명하는 선생님까지...💖

재미 요건은 충족했고, 실무에서 어떻게 SQL을 사용하는지에 대한 이야기를 해주는 분이라는 기대 때문에 강의를 결제했다. 실제로 가장 만족하는 부분은 스파르타 코딩클럽의 고객 데이터를 이용한 퀴즈로 강의를 진행한다는 점! 더미 데이터지만, 내가 그 고객이라 그런지 와닿는 부분이 있었다. 다만 기초인 만큼 문제가 너무 쉬워서 아쉬움. 갈수록 어려워지려나

여튼 실무에서 맞딱드릴 만한 데이터라는 생각이 들었다. 데이터캠프 같은 해외 사이트를 통해 공부할 때에는 실무와 동떨어진 문제가 많아서 약간 찝찝했다. 힘들게 공부해도 회사에서 적용 못하고 어버버할 것 같다는 예감이 들었기 때문ㅜㅜ

결론은 잘 선택했고 앞으로 4주 동안 열심히 달려보겠다는 얘기!!

앞으로 공부 과정

  1. 엑셀보다 쉬운 SQL 강의
  2. 칼퇴족 김대리 SQL
  3. 프로그래머스 SQL 코딩테스트 문제풀이

세 가지를 병행하며 공부할 계획이다.

SELECT문과 WHERE절

마치며 이번 주 학습내용 정리

[수업 목표]
1. 데이터베이스(DB)와 SQL이 왜 필요한지 이해한다.
2. DB에서 데이터를 가져오는 기초적인 문법인 SELECT와 WHERE문을 이해한다.
3. 조금 더 복잡한 분석을 위해 자주 사용되는 유용한 문법을 익힌다.

WHERE절과 자주 사용하는 문법

1. '포함'의 조건 표현 in()

괄호 안에 들어있는 조건에 속하는 필드만 보여달라는 조건문이다. 어느 하나만 충족해도 출력한다. OR 연산자를 여러 번 사용될 경우 쓴다.

SELECT * FROM checkins
WHERE week in (1,3);

강의 시작 주차가 1 혹은 3인 유저 정보만 전부 가져오기

  • OR 연산자와의 차이
    • OR 연산자보다 처리 속도가 빠르다.
    • IN 연산자 안에 다른 SELECT 문을 쓸 수 있다. 하위 쿼리 개념

NOT IN('A', 'B')와 같이 앞에 NOT을 붙이면 IN 연산자를 부정하는 계산도 가능하다. A 혹은 B가 아닌 모든 열을 출력한다.

2. 텍스트 마이닝, '문자열 규칙'을 조건으로 표현하는 Like

WHERE 절에서 사용하는데, LIKE 'XXXX%'라면, 한 필드 안에 있는 정보 중 'XXXX'라는 패턴을 보이는 필드를 전부 가져온다.

SELECT * FROM users
WHERE email like '%daum.net';

이라고 입력하면, users 테이블에서 daum.net이라는 문자열 패턴을 포함하는 모든 정보를 가져온다. 다시 말하면, daum.net을 이용하는 모든 유저의 전체 이메일 주소를 가져오는 것.

3. 일부 데이터만 가져오는 LIMIT

큰 테이블의 형태를 빠르게 파악할 때 유용하게 쓴다. 어떤 필드가 있는지 정보를 요약해서 볼 수 있다.

SELECT * FROM orders
WHERE payment_method = 'kakaopay'
LIMIT 5;

'payment_method'가 카카오페이인 유저들 중에서 5명만 추려서 보여주라는 뜻.

SELECT * FROM orders;

보다 데이터를 가져오는 속도가 빠르다.

4. NULL값과 중복 데이터를 제외하는 DISTINCT

'여자', '남자'와 같이 열 값이 범주형 변수일 경우, 한 필드에 어떤 값이 들어있는지 파악할 때 유용하다. 중복을 허용하지 말고 출력하라는 뜻이다. 집계 함수, 하부 쿼리에서 자주 쓴다.

SELECT DISTINCT(payment_method) FROM orders

카카오페이, 신용카드 등등

SELECT COUNT(DISTINCT payment_method) FROM orders

지불 방법은 4개 뿐이다.

DISTINCT 뒤에는 여러 개의 열을 쓸 수 있다. 뒤에 나오는 열을 하나의 집합으로 생각해서 이 집합의 중복을 제거한다.

SELECT DISTINCT payment_method, course_title FROM orders;

위와 같이 쓰면, payment_method와 course_title 두 필드를 하나의 집합으로 인식한다. DISTINCT가 없을 때, course_title = '앱개발 종합반' 이면서 payment_method = 'kakaopay'인 열이 두 개였다면, DISTINCT 명령을 사용하면 한 번만 출력한다.

5. 내가 제시한 조건에 해당하는 정보의 개수를 세는 COUNT(*)

SELECT COUNT(*) FROM orders
WHERE payment_method = 'kakaopay'

카카오 페이로 결제한 유저가 몇 명인지 알려줘

6. DISTINCT와 COUNT 함께 사용하기

SELECT COUNT(DISTINCT(name)) FROM users

라는 쿼리문을 작성하면, 우선 성씨 별로 유저의 정보를 축약해서 본 다음, 그 열의 갯수를 세니까 결국 나의 고객들의 성이 몇 개인지 파악할 수 있다.

좋은 웹페이지 즐겨찾기