웹사이트나 서비스 운영에서 특정 기간(예: 최근 7일, 30일)의 조회 수를 집계하는 일은 매우 중요합니다.
이번 글에서는 기간 필터링과 ORDER BY를 활용해 최근 N일간 데이터를 효과적으로 추출하는 SQL 쿼리 작성 방법을 알아보겠습니다.
MySQL 예제
SELECT DATE(view_date) AS view_day,
COUNT(*) AS view_count
FROM page_views
WHERE view_date >= CURDATE() - INTERVAL 7 DAY
GROUP BY view_day
ORDER BY view_day DESC;
SQLCURDATE() - INTERVAL N DAY
를 사용해 오늘 기준 N일 전 데이터를 필터링GROUP BY
로 날짜별 집계ORDER BY DESC
로 최신 날짜부터 정렬
Oracle 예제
SELECT TO_CHAR(view_date, 'YYYY-MM-DD') AS view_day,
COUNT(*) AS view_count
FROM page_views
WHERE view_date >= TRUNC(SYSDATE) - 7
GROUP BY TO_CHAR(view_date, 'YYYY-MM-DD')
ORDER BY view_day DESC;
SQLTRUNC(SYSDATE)
로 날짜의 시간을 제거- 동일하게 N일 전 데이터 필터링 가능
활용 팁
- N일을 7, 30, 90 등으로 자유롭게 변경 가능
- 기간 필터링을 WHERE 절에서 하고, 정렬은 ORDER BY에서만 담당
- 조회 수 분석뿐 아니라 매출, 가입자 수 등에도 그대로 응용 가능
마무리
최근 N일간 조회 수 집계는 데이터 분석과 리포트 작성에서 기본이 되는 작업입니다.
이번 쿼리 구조를 익혀두면 기간 필터를 변경해 다양한 분석을 빠르게 수행할 수 있습니다.
다음 글에서는 특정 시간대별 조회 수 집계 방법에 대해 다뤄보겠습니다.