작성
·
283
0
채널별 고유/주문 사용자 건수와 매출 금액 및 비율 SQL로 구하기 2 를 학습하면서
/************************************
채널별 고유 사용자 건수와 매출금액 및 비율, 주문 사용자 건수와 주문 매출 금액 및 비율
채널별로 고유 사용자 건수와 매출 금액을 구하고 고유 사용자 건수 대비 매출 금액 비율을 추출.
또한 고유 사용자 중에서 주문을 수행한 사용자 건수를 추출 후 주문 사용자 건수 대비 매출 금액 비율을 추출
*************************************/
with temp_01 as (
select a.sess_id, a.user_id, a.channel_grouping
, b.order_id, b.order_time, c.product_id, c.prod_revenue
from ga_sess a
left join orders b on a.sess_id = b.sess_id
left join order_items c on b.order_id = c.order_id
where a.visit_stime >= (:current_date - interval '30 days') and a.visit_stime < :current_date
)
select channel_grouping
, sum(prod_revenue) as ch_amt -- 채널별 매출
--, count(distinct sess_id) as ch_sess_cnt -- 채널별 고유 세션 수
, count(distinct user_id) as ch_user_cnt -- 채널별 고유 사용자 수
--, count(distinct case when order_id is not null then sess_id end) as ch_ord_sess_cnt -- 채널별 주문 고유 세션수
, count(distinct case when order_id is not null then user_id end) as ch_ord_user_cnt -- 채널별 주문 고유 사용자수
--, sum(prod_revenue)/count(distinct sess_id) as ch_amt_per_sess -- 접속 세션별 주문 매출 금액
, sum(prod_revenue)/count(distinct user_id) as ch_amt_per_user -- 접속 고유 사용자별 주문 매출 금액
-- 주문 세션별 매출 금액
--, sum(prod_revenue)/count(distinct case when order_id is not null then sess_id end) as ch_ord_amt_per_sess
-- 주문 고유 사용자별 매출 금액
, sum(prod_revenue)/count(distinct case when order_id is not null then user_id end) as ch_ord_amt_per_user
from temp_01
group by channel_grouping order by ch_user_cnt desc;
위 쿼리의 쿼리 뜻이 잘 이해가 안되어 질문 드립니다.
, sum(prod_revenue)/count(distinct user_id) as ch_amt_per_user -- 접속 고유 사용자별 주문 매출 금액
, sum(prod_revenue)/count(distinct case when order_id is not null then user_id end) as ch_ord_amt_per_user
이 두 항목은 각각 접속 고유 사용자별 주문 매출 금액,
주문 고유 사용자별 매출 금액이라 명칭 되어 있는데, 어떤 의미를 가지고 있는 것인지 잘 이해가 되지 않아 질문 드립니다.
접속 고유 사용자별 주문 매출 금액 : 사용자 대비 30일이내 매출 금액
주문 고유 사용자별 매출 금액 : 주문 대비 30일 이내 매출 금액
이렇게 이해를 하면 될런지요?
답변 1
0
한명의 사용자는 채널별로 여러번 접속을 할 수 있습니다. 즉 특정 사용자는 과거 부터 현재까지 여러개의 접속 세션을 가지고 있는 상태 입니다.
예를 들어 사용자 A는 아래와 같이 여러개의 접속 세션을 가질 수 있습니다. 즉 ga_sess 테이블에서 여러개의 접속 세션은 하나의 사용자에 할당됩니다.
SESSION_ID, USER_ID
1 , A -> 어제 저녁 접속
2 , B -> 오늘 아침 접속
3 , A -> 오늘 점심 접속
4 , B -> 오늘 점심 접속
5 , A -> 가장 최근 접속
위의 레코드는 총 5개이지만 고유 접속자는 A, B 두명입니다. 고유 접속자 건수란 의미는 중복을 제외한 접속 사용자 건수를 의미 합니다. 따라서 접속 고유 사용자별 주문 매출 금액은 접속 세션중에서 주문을 한 경우의 총 주문 매출을 접속 고유 사용자 건수로 나눈 금액입니다.
주문 역시 마찬가지로 한명의 사용자는 여러번 주문을 할 수 있습니다. 그리고 주문 고유 사용자는 중복을 제외한 주문 사용자 건수를 의미합니다. 따라서 주문 고유 사용자별 주문 매출 금액은 총 주문 매출을 주문 고유 사용자로 나눈 금액 입니다.
감사합니다.