본문 바로가기

Product Manager/데이터 리터러시

SQL을 사용해 데이터 추출하기 [코드스테이츠 PMB 7기]

이번 주제는 SQL과 DB 실습

(이번 포스팅은 빠르게 실습 내용부터!)

 

1. 고객 데이터 테이블을 확인 후 DB 스키마 정리하기

PMB에서 공유받은 고객 데이터 DB

 

SQL Tryit Editor v1.6

WebSQL stores a Database locally, on the user's computer. Each user gets their own Database object. WebSQL is supported in Chrome, Safari, Opera, and Edge(79). If you use another browser you will still be able to use our Try SQL Editor, but a different ver

www.w3schools.com

 

우선 위 링크에서 DB 구조를 확인했을 때, 아래와 같이 구성되어있었다.

 

 

 

 

이후 각 테이블마다 칼럼 구성을 확인해서 서로 어떤 관계성을 갖고 있는지 파악했다.

(www.w3schools.com에서는 이렇게 SQL 쿼리문을 직접 작성해서 출력해볼 수 있더라, 유용하고 신기했다.)

 

 

www.w3schools.com

 

 

 

그 결과 내가 그려낸 스키마 구조도는 아래와 같다.

 

스키마 구조도 완성본

이때 활용한 툴은 Draw.io. 처음 써본 툴이었는데, Google Drive 연동이 가능해서 편리했다. 

 

 

Flowchart Maker & Online Diagram Software

Flowchart Maker and Online Diagram Software diagrams.net (formerly draw.io) is free online diagram software. You can use it as a flowchart maker, network diagram software, to create UML online, as an ER diagram tool, to design database schema, to build BPM

app.diagrams.net

 

 

 

 

2. DB에서 데이터를 추출해 원하는 내용을 확인할 수 있는 SQL 문장을 작성해보기

 

UK에서 공급된 Seafood 제품의 주문 내역

UK에서 공급된 Seafood 제품의 주문 내역을 OrderID, ProductID, SupplierID, Country(공급 국가)을 출력.

이때 SupplierID 기준으로 그룹핑, SupplierID 기준으로 내림차순 정렬

 

 

 

SELECT
	O.OrderID,
	O.ProductID,
	P.SupplierID,
	S.Country
FROM OrderDetails AS O INNER JOIN Products AS P
	ON O.ProductID = P.ProductID
	INNER JOIN Suppliers AS S
WHERE P.CategoryID = 8 AND S.Country = 'UK'
GROUP BY P.SupplierID
ORDER BY P.SupplierID DESC;

 

1997년 일년간 Speedy Express가 배송한 주문 내역

OrderID, CustomerID, OrderDate 출력

 

 

SELECT 
	O.OrderID,
    O.CustomerID,
    O.OrderDate
FROM Orders AS O INNER JOIN Shippers AS S
		ON O.ShipperID = S.ShipperID
WHERE OrderDate >= '1997-01-01'
    	AND S.ShipperName = 'Speedy Express';

 

 

건당 주문액이 2500 이상인 주문 내역 

ProductID를 기준으로 OrderDetails 테이블과 Products 테이블을 조인.

P.Price *Quantity를 곱한 결과값을 '건당 주문액'으로 지정

OrderID과 건당 주문액 출력,

OrderID 기준으로 그룹핑, '건당 주문액' 기준으로 내림차순 정렬

 

 

SELECT
	D.OrderID,
	P.Price*D.Quantity AS '건당 주문액'
FROM OrderDetails AS D INNER JOIN Products AS P
ON D.ProductID = P.ProductID
WHERE P.Price*D.Quantity >= 2500
GROUP BY D.OrderID
ORDER BY P.Price*D.Quantity DESC;

 


나의 SQL 공부

PM으로서 데이터 역량을 갖추기 위해 공부하고 있는 SQL. 차후에 공부 회고를 진행하기 위한 기록으로 지금까지 SQL 공부를 위해 해온/하고 있는 2가지 활동을 본 포스팅에 공유해보려 한다.

 

첫째, <비개발자를 위한 SQL 데이터베이스 챌린지> @ 코드잇 

5월 말부터 코드잇의 <비개발자를 위한 SQL 데이터베이스 챌린지>에 참여했다. <컴퓨터 개론> 강의와 <비개발자를 위한 SQL 데이터베이스 강의>를 수강했고, 그와 더불어 내용정리/복습/실습을 진행했다. 35일간의 챌린지 기간이 지나고 지난 주말, 챌린지를 무사히 마쳤고 수료증도 발급받았다. 

 

둘째, <칼퇴족 김 대리는 알고 나만 모르는 SQL 기초편> 북클럽 @ 코드스테이츠 PMB7기

코드스테이츠 PMB 7기 동기들과 PMB 필독 도서인 <칼퇴족 김 대리는 알고 나만 모르는 SQL 기초편>을 주제로 북클럽을 진행하며 주말마다 모여서 교재에 나오는 예제들로 실습을 해보기로 했는데... 사실 첫주를 제외하고는 주말 아침마다 있는 다른 프로젝트와 겹쳐서 한번밖에 참여를 못한 상태. 게다가 팀원들과 함께 실습을 해보려고 하니, 문제가 막힐 때마다 집중해서 파고들기가 다소 어려운 부분도 있었다.

대신, 책을 아예 소장중이기 때문에 실습이나 사이드프로젝트에서 SQL문 작성시 헷갈리는 내용이 있을 때마다 확인해보고 계속 공부할 생각이다. 동기들과 책에 포함된 예제로 실습해보는 것은 못하더라도, 이번 포스팅에서의 실습처럼 혼자서라도 천천히 해볼 계획.

 

앞으로는,

북클럽에서는 다소 아쉬운 지점이 있었지만, 그래도 5월말에 계획해둔대로, 6월 안에 코드잇 SQL 강의를 무사히 수료해서 다행이다. 전반적인 개념 이해는 마쳤으니 6월 이후로는 실제로 실습하며 익히는 걸 중점적으로 할 예정이다. 오늘 또 새롭게 강의를 들으며 알게 되었는데, 구글 빅쿼리를 익혀서 직접 DB를 만들고 SQL문 입력해서 분석해보는 방법도 있는 듯. 물론 그러려면 빅쿼리 공부를 또 해야 하지만! 재미있을테니까 한번쯤은 도전해보고 싶음.

 

또, 7월부터는 GA를 다시 공부해보려고 한다.

작년에는 자격증만 (ㅎㅎ) 따고 더 진행하지 않았는데, 이번에 다시 처음부터 개념 복습하고, 실습으로 직접 분석하고 시각화도 해보고 싶다. (수업 때 시각화 예시 자료를 보는데 너무 멋져서 반해버림. 공부해보고 싶어졌다. 재미있을 듯.) GA 실습의 경우, 블로그나 커머스 사이트에 태그 삽입해서 진행해보는 걸 추천해주셔서 어떤 사이트로 해볼지 고민해볼 생각.

 

 


 

수수나

"어떻게 해야 더 많은 고객을 만족시킬 수 있을까?" 고민을 시작으로 PM에 도전합니다.

코드스테이츠 PM 부트캠프 7기에서의 배움을 시작으로 저만의 관점이 담긴 기록을 쌓아나가고 있습니다.