본문 바로가기
IT/SQL

[SQL] 월별 방문자수(UV), 월별 가입수 쿼리문

by marketinkerbell 2022. 5. 27.
반응형

 

 

[SQL] 월별 방문자수(UV), 월별 가입수 쿼리문

 

테이블명과 컬럼명은 회사마다 다릅니다. SQL 도 DBMS 에 따라 조금씩 표현 방법이 다릅니다. 어떤식으로 쿼리문을 작성하면 되는지 이해하며 보시고 상황에 맞게 수정해서 사용해보세요 :)

 

 

 

월별방문자수 (UV - UniqueVisit)

 

SELECT LEFT(vi_date,7AS month
,COUNT(DISTINCT vi_ip) AS uv
FROM visit
WHERE vi_date BETWEEN '2021-01-01' AND 'current_date' 
AND LEFT(vi_ip,9!='11.11.100'   -- 회사 IP 제외 
GROUP BY LEFT(vi_date,7)
ORDER BY month ASC

 

 

 

SELECT LEFT(vi_date,7) AS month
,COUNT(DISTINCT vi_ip) AS uv
FROM visit
WHERE vi_date BETWEEN '2021-01-01' AND 'current_date' 
AND LEFT(vi_ip,9) !='11.11.100'  -- 회사 IP 제외
GROUP BY LEFT(vi_date,7)
ORDER BY month ASC

 

 

 

코드설명 :

1. visit 테이블에서 월별 방문자의 ip 개수를 카운팅해서 방문자수로 나타낸다.  

2. COUNT(DISTINCT vi_ip) AS uv  -> DISTINCT 는 중복 제거하고 한 IP 는 여러번 찍혀도 한명으로 카운팅하겠다는 의미다

3. current_date 는 오늘날짜를 반환해주는 함수

4. LEFT 는 해당 문자열의 왼쪽에서 지정한 개수까지의 문자만 출력해주는 함수 

 ex) vi_date 가 2021-02-21 10:00:32  면  LEFT(vi_date,7) 는  2021-02  를 의미한다. 

 

 

 

 

결과 테이블 형식>

 

month uv
2021-01 5651
2021-02 5644
.... ....

 

 

 

 

 


 

 

월별 가입수

 

 

SELECT
 substring(mb_datetime, 1,7AS month,
 COUNT(*AS register_qty 
FROM member
WHERE substring(mb_datetime, 1,7BETWEEN '2021-01' AND 'current_month' 
GROUP BY month 
ORDER BY month ASC
 
 
 
SELECT
 substring(mb_datetime, 1,7) AS month, -- mb_datetime 은 가입일
 COUNT(*) AS register_qty -- 가입자수
FROM member
WHERE substring(mb_datetime, 1,7) BETWEEN '2021-01' AND 'current_month' 
GROUP BY month 
ORDER BY month ASC

 

 

 

코드설명 :

- substring 은 해당 문자열에서 몇번째 문자부터 몇개의 문자를 출력해줄지 정해주는 함수

ex) substring(mb_datetime, 1,7) 은 mb_datetime 첫번째 문자부터 7개 출력해주라는 의미 

     mb_datetime 이 2021-01-31 21:32:28  이면 2021-01 만 출력해줌

 

 

 

결과 테이블 형식>

 

month register_qty
2021-01 6452
... ....

 

 

 

 

 

댓글