카테고리별 통계 리포트는 마케팅 및 콘텐츠 운영 시 중요한 집계 자료로 매우 중요합니다.
이번 포스팅에서는 카테고리별 클릭 수와 조회 수를 집계하는 리포트 쿼리를 MySQL과 Oracle 환경 각각의 예제로 작성하는 방법을 소개하겠습니다.
카테고리 리포트가 필요한 이유
- 어떤 카테고리에서 클릭이 많은지 파악하면 사용자 관심도 분석이 가능합니다.
- 마케팅 캠페인, 콘텐츠 그룹 운영, 제품군 분석에서 핵심 리포트 중 하나입니다.
예제를 위한 테이블 정보
칼럼명 | 설명 |
---|---|
id | 고유 id 값 |
slug | 페이지 고유 슬러그 |
created_at | 생성일자(DATETIME) |
칼럼명 | 설명 |
---|---|
slug | 페이지 고유 슬러그 |
category_name | 카테고리명 |
🚩
slug
는 페이지 식별자이며, 두 테이블을 slug 기준으로 JOIN하여 카테고리 정보를 가져옵니다.
MySQL / MariaDB 쿼리 예시
SELECT B.category_name
, COUNT(*) AS click_cnt
FROM click_actions A
JOIN store_page_info B ON A.slug = B.slug
GROUP BY B.category_name
ORDER BY click_cnt DESC;
SQL설명
JOIN
을 사용하여category_name
을 연결합니다.GROUP BY
로 카테고리별로 클릭 수 집계- 정렬해서 인기 카테고리 순위도 확인 가능
slug
칼럼은 두 테이블 전부 인덱스 설정 필수입니다.
Oracle / 티베로 쿼리 예시
SELECT B.category_name
, COUNT(*) AS click_cnt
FROM click_actions A
JOIN store_page_info B ON A.slug = B.slug
GROUP BY B.category_name
ORDER BY click_cnt DESC;
SQL기본 구조는 MySQL과 동일하되, Oracle에서는 컬럼명과 서브쿼리 시 데이터 타입에 유의하세요.
조회 수 기준 집계 (page_views 테이블 활용)
SELECT B.category_name
, COUNT(*) AS view_cnt
FROM page_views A
JOIN store_page_info B ON A.slug = B.slug
GROUP BY B.category_name
ORDER BY view_cnt DESC;
SQL클릭 수 대신 페이지 조회 수 기준으로도 집계 가능
상황에 따라click_actions
→page_views
로 테이블만 변경
집계 기준 응용 (예: 일자 + 카테고리별)
SELECT B.category_name
, DATE(A.created_at) AS click_date
, COUNT(*) AS click_cnt
FROM click_actions A
JOIN store_page_info B ON A.slug = B.slug
GROUP BY B.category_name, DATE(A.created_at)
ORDER BY click_date, click_cnt DESC;
SQL📌 일자별로도 나눠서 분석할 경우 이렇게 확장할 수 있습니다.
마무리
카테고리별 통계 리포트는 가장 기본적이면서도 실무에서 자주 활용되는 대표적인 리포트 유형입니다.
이번 글에서는 간단한 예시 쿼리를 통해 테이블을 바꿔 사용하는 팁과 집계 기준을 추가하는 방법도 함께 알아봤습니다.
다음 포스팅에서는 누적 사용자 통계 리포트를 지금과 같은 흐름으로 소개해 드릴 예정입니다.