카테고리별 통계 리포트 SQL 쿼리|클릭 조회 집계 실전 예제

카테고리별 통계 리포트는 마케팅 및 콘텐츠 운영 시 중요한 집계 자료로 매우 중요합니다.
이번 포스팅에서는 카테고리별 클릭 수와 조회 수를 집계하는 리포트 쿼리를 MySQLOracle 환경 각각의 예제로 작성하는 방법을 소개하겠습니다.

카테고리 리포트가 필요한 이유

  • 어떤 카테고리에서 클릭이 많은지 파악하면 사용자 관심도 분석이 가능합니다.
  • 마케팅 캠페인, 콘텐츠 그룹 운영, 제품군 분석에서 핵심 리포트 중 하나입니다.

예제를 위한 테이블 정보

칼럼명설명
id고유 id 값
slug페이지 고유 슬러그
created_at생성일자(DATETIME)
테이블명 : click_actions
칼럼명설명
slug페이지 고유 슬러그
category_name카테고리명
테이블명 : store_page_info

🚩 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_actionspage_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

📌 일자별로도 나눠서 분석할 경우 이렇게 확장할 수 있습니다.

마무리

카테고리별 통계 리포트는 가장 기본적이면서도 실무에서 자주 활용되는 대표적인 리포트 유형입니다.
이번 글에서는 간단한 예시 쿼리를 통해 테이블을 바꿔 사용하는 팁과 집계 기준을 추가하는 방법도 함께 알아봤습니다.
다음 포스팅에서는 누적 사용자 통계 리포트를 지금과 같은 흐름으로 소개해 드릴 예정입니다.

👉 관련 포스팅들

위로 스크롤