반응형
[SQL] 월별 방문자수(UV), 월별 가입수 쿼리문
테이블명과 컬럼명은 회사마다 다릅니다. SQL 도 DBMS 에 따라 조금씩 표현 방법이 다릅니다. 어떤식으로 쿼리문을 작성하면 되는지 이해하며 보시고 상황에 맞게 수정해서 사용해보세요 :)
월별방문자수 (UV - UniqueVisit)
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
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,7) AS month,
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
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 |
... | .... |
'IT > SQL' 카테고리의 다른 글
[SQL] 문자열 더해서 출력하는 방법 (concat or ||) (0) | 2022.08.30 |
---|---|
[SQL] 전월 동일 시점 누적 데이터 비교 쿼리문(ft. Line Chart) (0) | 2022.06.13 |
[SQL] 상품등록 후 최초 30일 판매 데이터 쿼리문 (0) | 2022.05.27 |
[SQL 예문] SQL 연습하기 3 (기초 쿼리문) (0) | 2022.03.24 |
[SQL 예문] SQL 연습하기 2 (기초 쿼리문) (0) | 2022.03.24 |
댓글