6-6 메인지표 SQL쿼리 짜보기
안녕하세요, 선생님. 이번 강의에서 질문이 하나 더 있었습니다! 앞에 남긴 질문과 한꺼번에 남길걸 그랬네요..😅 선생님께서 추천을 통한 주문 전환률 (CVR) 을 구하기 위해 작성한 쿼리를 보니# 선생님 풀이
SELECT event_date
, use_recomend_payment / click_recomend_food AS recommend_cvr
FROM(
SELECT event_date
, COUNTIF(event_name = " click_payment" AND use_recommend_food = "TRUE") AS use_recomend_payment #추천음식 클릭하여 결제
, COUNTIF(event_name = "click_recommend_food") AS click_recommend_food #추천음식 클릭
FROM log
WHERE is_meet_min_order_price = 'False'
GROUP BY event_date
) AS temp
1) 추천상품 클릭하여 전환된 횟수 ( use_recomend_payment)와, 추천음식을 클릭한 횟수(click_recommend_food) 를 구해서 from절 서브쿼리에 넣기2) 추천상품 클릭하여 전환된 횟수 / 추천음식 클릭 횟수 연산하여 recommend_cvr 구하기이렇게 from 절을 써야하더라구요. 선생님의 해설을 보기 전, 스스로 풀었을 때는 from절을 쓰지 않고 그냥 한번에 썼었습니다.
#셀프풀이
SELECT event_date
, COUNTIF(event_name = " click_payment" AND use_recommend_food = "TRUE") AS use_recomend_payment #추천음식 클릭하여 결제
, COUNTIF(event_name = "click_recommend_food") AS click_recommend_food
, COUNTIF(event_name = " click_payment" AND use_recommend_food = "TRUE") / COUNTIF(event_name = "click_recommend_food") AS recommend_cvr
FROM log
WHERE is_meet_min_order_price = 'False'
GROUP BY event_date혹시 이렇게 한번에 쓰면 오류가 발생하는지, 서브쿼리를 사용하여 풀어야 하는 이유가 무엇인지 궁금합니다! 여유있으실 때 회신 주세요.감사합니다!
답변 1
0
orchid Y님 안녕하세요! 열심히 공부하고 계시는군요!
쿼리를 좀 더 보기 쉽게 작성해볼게요(코드블럭을 사용하시면서 공유해주시면 더 가독성 있게 볼 수 있어요!)
제가 풀었던 쿼리
SELECT
event_date,
use_recomend_payment / click_recomend_food AS recommend_cvr
FROM(
SELECT
event_date,
COUNTIF(event_name = " click_payment" AND use_recommend_food = "TRUE") AS use_recomend_payment,
COUNTIF(event_name = "click_recommend_food") AS click_recommend_food
FROM log
WHERE is_meet_min_order_price = 'False'
GROUP BY event_date
)
셀프 풀이
SELECT
event_date,
COUNTIF(event_name = " click_payment" AND use_recommend_food = "TRUE") AS use_recomend_payment,
COUNTIF(event_name = "click_recommend_food") AS click_recommend_food,
COUNTIF(event_name = "click_payment" AND use_recommend_food = "TRUE")/COUNTIF(event_name = "click_recommend_food") AS recommend_cvr
FROM log
WHERE is_meet_min_order_price = 'False'
GROUP BY event_date
말씀해주신 것처럼 서브쿼리로 푸셔도 상관없고, 어떤 DB를 쓰느냐에 따라 성능 차이가 있긴 하지만, 데이터 웨어하우스 관점에선 비슷합니다.
서브 쿼리를 사용한 이유는 가독성 관점에서 더 보기 좋다고 판단해서 저렇게 풀었다고 보시면 될 것 같아요. 또한 이 데이터가 한번만 사용된다면 푸신 것처럼 쓰셔도 되는데, 나중에 재활용이 된다고 하면 제가 풀었던 쿼리의 FROM 절을 WITH 문으로 정의해서 계속 사용할 것 같아요. 쿼리의 구조를 더 명확하게 하고 나누기 위해 서브쿼리를 사용했다고 보셔도 괜찮습니다
정리 : 지금 푸신 방법으로 해도 정상적으로 동작할 것. 저는 더 복잡한 상황을 대비해 서브쿼리를 사용했는데, 지금 상황엔 서브쿼리를 사용하지 않고 그냥 쓰는게 더 가독성 관점에선 좋을 수도 있을거에요. 푸신 문제도 잘 푸셨다고 생각하시면 되어요!
제가 조만간 빅쿼리 SQL 강의를 출시할 예정인데 그 때 더 자세한 설명을 할 예정이에요-!
6-7 로그설계하기 연습문제 제출/ 피드백 요청
0
30
2
4-8. 지표 정의 연습 문제
0
45
2
Tracking Plan, Taxonomy 문제풀이
0
74
1
6-7 로그설계하기 실습 제출
0
50
1
6-7 로그설계하기 연습문제 제출/ 피드백 부탁드립니다.!!
0
51
1
4-8 지표정의 연습문제
0
48
3
질문있습니다!
0
63
1
4-8 지표 정의하기 연습 문제 풀이
0
98
1
4-8 지표 정의하기 연습 문제 풀이!
0
83
2
4-8. 지표 정의 연습 문제 1번과 2번 피드백을 여쭐 수 있을까요?
0
91
2
강의 수강 목적입니다!
0
52
2
6-7. 데이터 로그설계 연습 문제 제출합니다!
0
94
3
4-8. 지표 정의 연습 문제 피드백 부탁드립니다!
0
129
3
이미 배포가 확정된 기능에 대한 ABT 진행에 대한 문의
0
90
3
4-8 지표 정의 풀이 피드백 부탁드립니다🙇♂
1
99
3
강의 목적입니다.
0
78
2
6-4 데이터 로그 설계 프로세스 강의 관련 질문
0
66
1
4-8 지표정의 문제 풀이 입니다
0
127
2
데이터 취합과 정리 어디서부터 해야할까요
0
98
2
3장 강의자료 다운로드 시, 2강이 다운로드 됩니다.
0
69
2
데이터 로그 설계 과제 작성
0
111
2
코칭 관련
0
80
2
슈퍼셋 사용이 처음이라 질문드립니다.
0
112
1
지표정의 4-8 문제풀이 입니다.
0
133
1





