brunch

You can make anything
by writing

C.S.Lewis

by 류니 Jan 12. 2022

PM은 왜 데이터를 다뤄야 할까? (Feat. SQL)

[코드스테이츠 PMB 8]


PM에게는 다양한 것들이 요구되지만, 그중에서도 데이터를 보고 인사이트를 얻을 수 있는 '정량적 분석' 스킬도 중요하게 요구된다. PM은 다른 이해관계자부터 내부 팀원들까지 방향을 제시하고 소통하기 위해서는, 정량적인 '데이터'를 수치로서 보여주며 모두에게 이해시켜야 하기 때문이다. 그렇기 때문에 PM도 데이터를 다를 줄 알아야 한다. PM이 다뤄야 할 고객 데이터는 '데이터 베이스 DB'로부터 온다.


(데이터 베이스는 컴퓨터 시스템에 전자 방식으로 저장된 구조화된 데이터의 체계적인 집합)







데이터 베이스를 다루는데 PM이 해야 하는 역할은 무엇일까?

데이터 분석 과정을 보며 알아보자


1. 컨셉 – 어떤 목적을 바탕으로 어떻게 수집해야 하는가

데이터를 어떤 인덱스로 보고 싶은지에 따라 목적을 정해야 한다.


2. 수집 – 수집 절차를 어떻게 구성해야 하는가

정성적으로는 인터뷰와 같은 자료를 정량적으로는 A/B 테스트 또는 이미 만들어진 서비스라면 이전 데이터를 활용해 데이터를 수집한다. 프로덕트와 서비스에 따라 수집 절차가 바뀔 수 있다.


3. 처리 – 입력된 데이터를 어떻게 변형해야 하는가

데이터양을 확인하고 기록하며 정보들을 요약한다.


4. 분포 – 처리한 데이터를 어떻게 바라봐야 하는가

데이터를 어떻게 사용할 것인지 계획하고 데이터를 잘 정리해서 앞으로 단계를 준비한다.


5. 발견 - 데이터의 분포를 바탕으로 결과를 찾아내기

정리된 데이터에서 인사이트와 특이점을 발견한다.


6. 분석 – 결과에서 유의미한 분석을 도출하기

발견한 인사이트와 특이점을 통해 유의미한 분석을 도출한다. 그리고 왜 이런 결과가 나오게 되었는지 분석한다.



데이터 분석에서도 모든 절차에서 제품과 관련된 부분을 고려하는 것이 중요하다. PM이 무조건 적으로 데이터 분석 전문가처럼 툴을 능숙하게 다루고, 데이터를 척척 뽑아낼 줄 알아야 하는 것이 아니다. 가장 중요한 것은 결국에 PM은 어떤 데이터를 어떻게 가져올지 기획하고 설계하고 분석하는 것이다.




PM이 다루는 데이터에서는 '관계형 데이터 베이스 RDMS'가 있다. 각 데이터 별로 고유한 ‘기본 키’ 값을 갖도록 하는 컬럼을 하나 두고 해당 컬럼의 값을 연결해 기록함으로써 데이터 기록 양을 줄이면서도 데이터를 연관해서 살펴볼 수 있는 구조이다. 이렇게 데이터를 따로 기록하고 기본 키를 사용해 상호 간의 관계를 기록하는 데이터 베이스를 관계형 데이터 베이스라고 한다.


이런 관계형 데이터 베이스를 표현하는 방법과 설계하기 위한 설계 구조로 E-R 다이어그램과, 스키마가 있다.



좌 - E-R 다이어그램(출처:위키백과) / 우 - 스키마(출처:팝스앤드티스토리)


이렇게 여러 테이블에 나누어 저장된 데이터를 원하는 대로 불러오려면 어떻게 해야 할까?

바로 RDMS의 데이터를 관리하기 위해 설계된 특수 목적 프로그램 언어인 'SQL'을 사용해야 한다. 관계형 데이터베이스 관리 시스템(RDBMS)에서 자료의 검색과 관리, 데이터베이스 스키마 생성과 수정, 데이터베이스 객체 접근 조정 관리를 위해 고안되었으며, 많은 수의 데이터베이스 관련 프로그램들이 SQL을 표준으로 채택하고 있다. 







그래서 SQL 어떻게 사용해야 하는 걸까?

여러 DB에서 데이터를 추출해 원하는 내용만 확인할 수 있는 SQL 문장 만들어보기


(위 프로그램을 사용해서 SQL를 학습할 수 있습니다.)


Table


다음과 같은 데이터 베이스를 가진 회사를 예시로 각 상황별 SQL을 어떻게 사용하는지 알아보자






데이터를 통해 빠르게 필요한 정보 찾기


상황 1. 이번에 들어온 신입한테 회사에 판매하는 상품에 대해 알려줘야 해요. 각 카테고리 별로 어떤 상품들이 있는지 리스트 좀 뽑아주세요.

by.류니


- 카테고리와 상품을 알 수 있는 테이블은 각각 [Cateories], [Products]이다. 이렇게 2가지 테이블에서 우리는 Category NameProduct Name을 알 야한다. 각 테이블에서 공통으로 들어있는 Category ID를 매개로 INNER JOIN 명령어를 이용하면 각 카테고리에 어떤 프로덕트가 있는지 알 수 있다. 그리고 ORDER BY 명령어를 사용해 카테고리별로 그룹 지어 보이도록 설정했다.



**띄어쓰기와 소문자, 대문자, 그리고 콤마를 주의하세요**



SELECT Categories.CategoryName, Product.ProductName

FROM Categories

INNER JOIN Produts On Categories.CategoryID = Products.CategoryID

ORDER BY categoryName







상황 2. 이번에 'New Orleans Cajun Delights' 공급업체에 문제가 생겨서, 배송이 늦어질 것 같아요. 각 제품 상세페이지에 공지글 올려야 하니깐, 'New Orleans Cajun Delights' 공급업체가 공급하는 제품명 뽑아주세요.

by.류니


- 공급 업체와 상품명을 알 수 있는 테이블은 각각 [Suppliers], [Products]이다. 이렇게 2가지 테이블에서 우리는 SupplierNameProductName을 알아야 한다. 각 테이블에서 공통으로 들어있는 SupplierID를 매개로 INNER JOIN 명령어를 이용하면 각 공급업체가 어떤 상품을 공급하는지 알 수 있다. 그리고 또한 'New Orleans Cajun Delights'라는 특정 공급업체에 대한 정보만 필요하기 때문에, WHERE 명령어를 사용해 지정된 객체만 보이도록 설정했다.



SELECT Suppliers.SupplierName, Products.ProductName

FROM Suppliers

INNER JOIN Produts On Suppliers.SupplierID = Products.SupplierID

WHERE SupplierName = 'New Orleans Cajun Delights'

ORDER BY SupplierName









데이터를 통해 전략 구축하기


상황 3. 판매량이 좋은 스테디 상품들을 골라, 고객들에게 10% 할인쿠폰을 제공하는 프로모션을 진행하려고 해요, 우리 회사 제품 중에 판매량이 제일 좋은 상품 3가지만 뽑아주세요.


- 제품 별로 판매량을 알 수 있는 테이블은 [OrderDetails]이다. 이 테이블에서 ProductIDQuanity를 뽑아 내림차순으로 정렬하면 판매량이 가장 좋은 제품들을 알 수 있다

- 만약 반대로 오름차순으로 정렬한다면 판매량이 저조한 제품들을 파악할 수 있고, 판매량을 증진할 수 있는 전략을 짤 수 있다.


SELECT ProductID, Quantity

FROM OrderDetails

ORDER BY Quantity DESC






상황 4. 고객 중 가장 재구매율이 낮은 고객을 파악하려고 합니다. 고객별로 주문 횟수가 얼마인지, 그리고 가장 주문 횟수가 적은 순서대로 정렬해 주세요.


고객별 주문 횟수를 알 수 있는 테이블은 [Orders]이다. 고객별로 몇 번 주문했는지 알기 위해 주문 내역에 있는 CustomerID 수를 세면 주문 횟수를 알 수 있다. 따라서 COUNT(CustomerID)로 주문 횟수를 카운팅 했다.


- 이를 통해 재 구매율이 낮은 고객을 파악해, 고객이 재 방문할 수 있도록 푸시 알람 등으로 사이트 방문을 유도하고, 할인 쿠폰을 제공해 구매율을 높이는 방법과 같은 다양한 전략을 세울 수 있다.


SELECT CustomerID,

COUNT(CustomerID) As 주문 횟수

FROM Orders

GROUP BY CustomerID

ORDER BY COUNT (CostomerID)







건축을 설계하다 서비스까지 설계하는 본 투 비 설계자의 PM도전 프로젝트


브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari