[SQL] 연습

[solvesql] 일별 블로그 방문자 수 집계

Simon Yoon 2022. 10. 13. 23:50

Q. 2021년 8월 2일부터 2021년 8월 9일까지 날짜별로 몇 명의 방문자가 방문했는지 알고 싶습니다. 해당 일자 내 로그 테이블에 이벤트가 하나라도 기록 된 경우 방문자로 집계합니다. 기간 별 방문자 수를 일별로 추출하는 쿼리를 작성해주세요. 결과 데이터에는 아래 2개 컬럼(dt - 방문일, users - 방문자수)이 들어가야하며, 방문일을 기준으로 오름차순 정렬되어있어야 합니다.

 

- 문제 조건 확인

1. 2021년 8월 2일부터 2021년 8월 9일까지 날짜

    → where date(~) >= date('2021-08-02') and date(~) <= date('2021-08-09')

2. 방문자 수일별로 추출

    → 일별: group by 일자  +  방문자수: count(distinct ~)

3. 방문일을 기준으로 오름차순 정렬

    → order by 방문일

 

- 테이블 확인

ga 테이블에서 필요한 정보만 추출

 

- 풀이과정

1. 먼저 ga 테이블을 확인한 후, 필요한 필드만 추출

select event_date_kst, user_pseudo_id
from ga
limit 1000
;

1. 실행 결과 일부

2. where 조건절과 group by + count(distinct ~ ) 문 추가

- 여기서 추출을 요구하는 필드의 필드명을 alias로 dt 와 users 라고 설정함

- 앞서 테이블에서 event_date_kst 필드의 data type 이 date 임을 확인함

- 일별 방문자 수를 카운트 하기 위해서 group by 에는 event_date_kst 로, user_pseudo_id 는 distinct 한 채로 count 함

select event_date_kst dt, count(distinct user_pseudo_id) users
from ga
where event_date_kst >= date('2021-08-02') and
  event_date_kst <= date('2021-08-09')
group by event_date_kst
;

2. 실행 결과 일부


A. 최종 답안

select event_date_kst dt, count(distinct user_pseudo_id) users
from ga
where event_date_kst >= date('2021-08-02') and
  event_date_kst <= date('2021-08-09')
group by event_date_kst
order by dt
;

최종 실행 결과 일부

 

+ 비슷한 문제

2022.10.09 - [[SQL] 연습] - [solvesql] 복수 국적 메달 수상한 선수 찾기