2에서 사용한 연령별 구분을 기반으로 각각 구매한 상품의 카테고리를 집계해보자.
연령과 나이를 구분하여 카테고리를 만드는 것까지는 이전 포스팅과 동일하다.
WITH
mst_users_with_int_birth_date AS (
SELECT *
, 20170101 AS int_specific_date
,CAST(replace(substring(birth_date, 1, 10), '-', '') AS integer) AS int_birth_date
FROM mst_users
)
, mst_users_with_age AS (
SELECT *
, floor((int_specific_date - int_birth_date)/10000) AS age
FROM mst_users_with_int_birth_date
)
, mst_users_with_category AS (
SELECT user_id
, sex
, age
, concat(
CASE WHEN 20 <= age THEN sex
ELSE ''
END
, CASE WHEN age BETWEEN 4 AND 12 THEN 'C'
WHEN age BETWEEN 13 AND 19 THEN 'T'
WHEN age BETWEEN 20 AND 34 THEN '1'
WHEN age BETWEEN 35 AND 49 THEN '2'
WHEN age >= 50 THEN '3' END
) AS category
FROM mst_users_with_age
)
-- 여기서부터 집계 쿼리
SELECT p.category AS product_category
, u.category AS user_category
, count(*) AS purchase_count
FROM action_log AS p
JOIN mst_users_with_category AS u ON p.user_id = u.user_id
WHERE ACTION = 'purchase'
GROUP BY p.category, u.category
ORDER BY p.category, u.category
;
👉 이러한 카테고리 분석시 ABC 분석과 구성비누계를 리포트에 추가하면 전달성을 향상시킬 수 있다.
728x90
'SQL > 실무 SQL' 카테고리의 다른 글
[PostgreSQL] 5. Decile 분석을 사용해 사용자를 10단계 그룹으로 나누기 (0) | 2024.01.30 |
---|---|
[PostgreSQL] 4. 사용자의 방문 빈도 집계하기 (0) | 2024.01.29 |
[PostgreSQL] 2. 연령별 구분 집계 (1) | 2024.01.29 |
[PostgreSQL] 1. 사용자의 액션 수 집계 (0) | 2024.01.29 |
[PostgreSQL] 히스토그램용 데이터 가공(width_bucket) (0) | 2024.01.27 |