brunch

You can make anything
by writing

C.S.Lewis

by 이설희 Sep 11. 2021

SQL 맛보기

[코드스테이츠 PMB 7기]

W5L1
SQL을 사용해 데이터 추출하기

1. 아래 링크에 접속합니다. DB에 저장되어 있는 고객 데이터를 살펴봅니다.
https://www.w3schools.com/sql/trysql.asp?filename=trysql_select_all
2. 살펴본 데이터를 바탕으로 DB 스키마를 정리합니다. DB간 개체, 속성, 관계를 알 수 있도록 작성합니다.
3. 여러 DB에서 데이터를 추출해 원하는 내용만 확인할 수 있는 SQL 문장을 3개 이상 만들어 봅니다.

PM은 다양한 분야에서 두루 아우르는 역량을 갖추고 있어야 한다. 하지만 그 중에서 한두가지 분야에 대해서는 전문성을 어필할 수 있어야 한다. 예를 들면 개발지식에 특화된 PM, UI UX에 특화된 PM, 데이터분석에 특화된 PM 등이 있을 수 있다. 


코드스테이츠 PMB에서는 이 모든 역량에 대해 전부 전문가 수준으로 성장할 것을 강요하지는 않지만 1) 어떤 분야에서라도 소통은 할 수 있게 하기위해 2) 본인이 갖추고자 하는 전문성이 어떤 분야인지 선택할 수 있게 하기위해 최소한의 지식은 다 가르쳐 준다. 물론 최소한이라고해서 쉽다는 건 절대 아니다. 


오늘은 PM이 갖춰야 할 수많은 역량 중에서 데이터분석에 대해 배운 내용을 가볍게 맛보기를 해보고자 한다.    




PM이 데이터분석을 하는 이유

PM은 커뮤니케이션이 굉장히 중요하다. 업무 방향성을 제안할뿐만아니라 그렇게 해야하는 이유를 각 실무자에게 타당성있게 설득해야 한다. 이때 PM은 데이터를 사용한다. 잠재고객 혹은 서비스 사용자에 대한 데이터 분석을 통해서 왜 프로덕트에 이 기능이 필요한지 설득하고, 프로덕트에 적용할 때 가설검증을 할때도 데이터 분석을 통해서 설명할 수 있어야 한다. 


데이터가 없으면 우리가 뭘 잘했는지 뭘 못했는지도 알 수 없고, 이걸 왜 해야하는지에 대해서도 근거를 제시하기 어렵다. 경험과 직관에 의한 의사결정도 때로는 중요하지만 시행착오의 과정을 단축시키고 더욱 객관적으로 프로덕트를 바라보기 위해서 데이터를 통한 인사이트 추출은 핵심적으로 필요한 역량이라고 볼 수 있다. 


다시 말해서 PM의 가장 기본적인 업무인 프로덕트의 성장을 위해 데이터분석은 필수적이며 데이터분석에 전문가수준으로 특화된 PM이 아니어도 할줄은 알아야 한다.   




데이터에 관련된 개념 정의

데이터베이스 (DB)

Database란 컴퓨터 시스템에 전자 방식으로 저장된 구조화된 데이터의 체계적인 집합을 의미한다. 여러 사람이 공유하여 사용할 목적으로 체계화해 통합, 관리한다. 작성된 목록으로써 여러 응용 시스템들의 통합된 정보들을 저장하여 운영할 수 있는 공용 데이터들의 묶음이다.

개념정의는 헷갈리는 단어가 많이 들어있지만 단순하게 축적한 데이터를 체계적으로 쌓아놓은 데이터모음이라고 생각하련다.  


DBMS

Database Management System 데이터베이스 관리 시스템은 데이터베이스의 체계적인 관리를 위해 사용된다. 데이터 추가, 변경, 삭제, 검색 등의 기능을 수행한다. 정의만 봐도 알 수 있듯 방대한 데이터를 손질하기 위해 만들어진 조리도구? 정도로 이해하면 좋을 것 같다. 데이터를 자르고 뽑아내고 편집해서 예쁘고 깔끔하게 대시보드에 담아내는 주방칼에 비유해본다. 


SQL

Structured Query Language 구조화 질의어라고 한다. 관계형 데이터베이스 관리 시스템(RDBMS)의 데이터를 관리하기 위해 설계된 특수 목적의 프로그래밍 언어이다. DBMS를 다루기위해 사용된다. 


스키마

스키마는 데이터베이스의 구조와 제약조건에 관해 전반적인 명세를 기술한 것 이다. 쉽게 정리하여, DB내에 어떤 구조로 데이터가 저장되는가를 나타내는 데이터베이스 구조를 스키마라고 한다. 


ERD

개체-관계 다이어그램 (ERD: Entity-Relationship Diagram) '존재하고 있는 것(Entity)들의 관계(Relationship)을 나타낸 도표(Diagram)'라고 한다. 

스키마와 ERD의 차이점이 헷갈릴 수 있을 것 같은데 스키마는 구조 그 자체이고 ERD는 이 스키마를 그린 도표라는 점에서 차이를 둘 수 있을 것 같다.

그리는 형식이 정해져 있는데 자세한 내용은 참고자료 2번 링크에서 확인할 수 있다. 



  

w3schools DB 스키마 정리

SQL을 처음 접해보거나 이제 막 배우기 시작한 사람에게 코드스테이츠 PMB 과정에서 추천하는게 두가지 있다. 1) SQL에 대해서 정말 쉽게 설명이 되어 있는 서적 '칼퇴족 김대리는 알고 나만 모르는 SQL' 2) DB 샘플이 있고 SQL을 간단하게 연습해볼 수 있는 사이트 'w3schools' 이렇게 두가지다. 책을 통해서 개념과 방법을 익히고 w3schools로 연습을 해보면 된다. 


우선 w3schools의 DB 스키마를 'draw.io' 사이트를 사용해서 ERD 형식으로 그려보았다.  




SQL 문장 만들어보기

1. 한번이라도 주문을 한 고객의 수를 알아보자

고객정보는 있지만 모든 고객이 주문을 하지는 않았을 거다. 주문을 한 고객도 있을 것이고 회원가입만 하고 주문은 안한 사람도 있을 텐데 그 중에서 주문을 한 고객의 수만 확인해보고자 한다. 


주문을 한 고객의 수

SELECT COUNT(DISTINCT CustomerID) FROM Orders; 


김대리 SQL 서적을 읽어봤을 때는 위의 SQL문을 적용하면 될 것 같은데 왜인지 모르겠지만 w3schools 사이트에서 위 SQL이 에러가 났다. 이 부분은 차후 에러 없이 작성할 수 있게 되면 확인된 값을 넣어 수정하도록 하겠다.


2. 높은 가격대의 제품이 무엇이 있는지 알아보자

w3schools의 제품의 가격은 적게는 2.5부터 많게는 263.5까지 다양하게 분포되어있다. 최소가격과 최대가격의 중간가격인 100이상인 제품의 리스트를 확인해보고자 한다. 


가격이 100이상인 제품 리스트

SELECT ProductName FROM Products WHERE Price >= 100; 


위 SQL문을 적용하면 2가 나온다. 즉 77개의 제품중에서 대부분의 제품이 가격 100 이하로 구성되어 있으며 중간값과 평균값의 차이가 심하고 200을 넘는 제품은 판매 제품들 사이에서 상대적으로 매우 비싼 제품에 속하는 것을 알 수 있다. 


3. 제품을 공급하는 나라들을 확인해보자

w3schools에 제품을 공급하는 나라들을 확인해보자. 나는 한국 사람이니까 '공급국가'라는 별칭을 붙여서 추출해보고자 한다. 


제품을 공급하는 국가의 리스트

SELECT Distinct Country AS '공급국가' FROM Suppliers; 


위 SQL문을 넣으면 Australia, Brazil, Canada, Denmark, Finland, France, Germany, Italy, Japan, Netherlands, Norway, Singapore, Spain, Sweden, UK, USA가 나온다. 호주, 유럽부터 아시아, 남미까지 전세계에서 제품을 공급받는 것을 알 수 있다.    




마치며

SQL을 정말 맛보기 수준으로 체험해보고나니 진땀이 난다. w3schools에서 제공하는 연습용 데이터가 아닌 실제 데이터를 활용해서 프로덕트에 적용시켜야 할 텐데 연습용데이터로도 고생했던 내가 정말 할 수 있을지에 대한 작은 두려움이 들었다. 하지만 PM이 되려면 꼭 배우고 익혀야 하는 부분이라고 생각하며, 사람은 적응의 동물이라고하니 조금씩 더 겪어보다보면 익숙해질거라고 막연히 기대해본다.     



[참고자료]

1. https://huskdoll.tistory.com/541

2. https://mjn5027.tistory.com/43

작가의 이전글 루티너리 온보딩에 A/B 테스트를 진행해본다면?
브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari