데이터 리터러시를 위한 발자취

[패스트캠퍼스] SQL 강의 학습후기 4주차 본문

데이터 분석/SQL

[패스트캠퍼스] SQL 강의 학습후기 4주차

wosole 2023. 6. 17. 22:05

벌써 SQL 강의 학습후기도 4주차에 들어섰습니다. 

 

내일배움카드 발급 후 듣고 있는 강의이지만 SQL 쪽은 python과 다르게 또 다른 재미가 있는 것 같습니다. 

개인적으론 3주차에서 실습을 처음 풀 때,  DATE_FORMAT 부문에 대한 개념을 확실하게 익힐 수 있어서 좋았습니다. 

 

개념 강의 파트에 비하면 실습 난이도가 꽤 올라가는 편이라 문제가 어떤 의미인지 뜯어본다고 제법 시간이 걸리네요.

하지만 강의 수강 전에는 어렵게만 느껴지던 SQL이 조금이지만 친숙해져가는 느낌이어서 더 열심히 해보고 싶어요.


# with문 : 서브쿼리를 사용해서 임시테이블처럼 사용할 수 있는 구문

* 데이터베이스에 저장되는 테이블은 아님

# 기본 쿼리문
WITH [임시테이블명] AS
(
	SELECT [컬럼명]
        FROM [테이블명]; -- 서브쿼리, WHERE, GROUP BY, ORDER BY 등 적용하여 사용 가능 
)
-- 임시테이블 설정 후, SELECT~FROM절을 통해 쿼리문 작성
SELECT [컬럼명],[컬럼명] 
FROM [임시테이블명];

# window 함수(행 순서 함수) *관련 레퍼런스 최하단 참고

: GROUP BY처럼 데이터 그룹화하여 집계하지만, GROUP BY와 달리 기존 데이터에 집계된 값을 추가하여 출력함

# 기본 쿼리문
[WINDOW 함수명][컬럼명] OVER (PARTITION BY [컬럼명] ORDER BY [컬럼명] [ASC/DESC])

- LAG() : 이전 행의 값을 가져옴

* 가져올 값이 없을 시 NULL값 생성

# 기본 쿼리문
LAG([컬럼명]) OVER (PARTITION BY [컬럼명] ORDER BY [컬럼명]) -- 필요에 따라 별명 사용

- LEAD() : 특정 컬럼 행의 다음 행 값을 가져옴(default - 1 : 다음 행을 가져옴)

* 더 이상 가져올 값이 없을 시 NULL값 생성

# 기본 쿼리문
LEAD([컬럼명]) OVER (PARTITION BY [컬럼명] ORDER BY [컬럼명]) -- 필요 시 별명 사용

# (실습) 결제 전환율(Conversion Rate) 계산

> 특정 행위를 한 방문자의 비율

EX) 웹서비스 전환율의 경우, 방문 후 판매 및 유료 서비스 등의 구독 단계까지 진행한 방문자의 비율을 의미함
* 인앱구매 또는 인웹서비스 형태의 앱/앱을 출시했을 때, 최초가입일 이후 유료서비스를 이용하는 유저들의 전환 액선(Conversion Action)을 계산함

산출식 > 유저가입일 / 최초 구매일 = 결제전환율
* 위 산출식은 강의에서 명시된 문제에 따라 적용된 것이기에 참고만 할 것
# 사용 쿼리문
-- TIME_TO_SEC : 시간을 초로 변환해주는 함수
SELECT TIME_TO_SEC ([컬럼명]); -- 1시간의 경우, 3600(초) 출력

-- TIMEDIFF : 시간 1 - 시간 2 차이 반환해주는 함수 (1주차 '5. 날짜형 데이터 정복하기' 참고)
SELECT TIMEDIFF([시간1],[시간2])

# (실습2) 재방문율(Retention Rate) 계산

> 서비스 출시 이후 서비스 재사용율 또는 재방문율은 어떻게 되는지 나타내는 지표

EX) 웹서비스 출시 이후, 1,000명의 유저가 접속하였는데 일정 기간 이후에도 약 800명의 유저가 사용하고 있다면 재방문율은 80%로 나타남
* 서비스 만족도를 가장 잘 대변하는 지표로, 서비스 만족도가 높다면 꾸준한 사용으로 재사용율은 높을 것임

'산출식 >특정 기간 마지막 지점에 방문한 유저 수 / 시작 시점에 방문한 총 유저 수 = 재방문율
* 위 산출식은 강의에서 명시된 문제에 따라 적용된 것이기에 참고만 할 것


 

실습 풀이 시 사용된 쿼리문 위주로 내용 정리해보았습니다. 

서브쿼리 쓰는게 이제야 익숙해진다 싶었더니 임시테이블 생성해주는 WITH문까지..

 

SQL의 세계는 무궁무진하다는 걸 매주 느끼는 요즘입니다. 

그래도 SQL 최적화를 위해선 필수로 숙지하고 있어야 할 개념들이겠죠. 

 

완강할 때쯤엔 풀이를 보지 않고도 척척 풀어낼 수 있으면 좋겠네요.

아직까진 SQL을 작성해도 40~50% 가까이 틀리고 있습니다.. ㅎㅎ


* WINDOW 함수 관련 References


 

Comments