설모의 기록

일주일 간격으로 데이터 개수 출력하기 본문

데이터베이스

일주일 간격으로 데이터 개수 출력하기

HA_Kwon 2017. 6. 22. 10:04

일정 기간마다 데이터의 개수를 뽑아오고 싶을 때 (예를 들어 1주일마다 회원가입 수) 쓰는 쿼리이다.

 처음에 생각한 방법은
count(case when convert(varchar(10), regDate, 120) between convert(varchar(10),DATEADD(d, -7, getDate()), 120) and convert(varchar(10), getDate(), 120) then 1 end) 
를 사용했다. 그런데 일주일 씩 count(*) 를 여러개 select 했더니 속도가 느려지는 것을 느꼈다. 그래서 검색하던 도중 새로운 쿼리를 알게 되었다.

SELECT DATEADD(week, DATEDIFF(week, 0, date컬럼명), 0) AS weekStart

, count(*) as cnt

FROM 테이블이름
GROUP BY DATEADD(week, DATEDIFF(week, 0, date컬럼명), 0)


위의 방식대로 쿼리를 짜게 되면 weekStart(월요일 날짜) 와 cnt(그 주의 데이터 개수) 를 구할 수 있다.
week 뿐만 아니라 day, month, year 로도 사용할 수 있다.

'데이터베이스' 카테고리의 다른 글

[SQL 스터디] SQL 첫걸음 스터디 - 2  (0) 2018.12.05
[SQL 스터디] SQL 첫걸음 스터디 - 1  (1) 2018.10.19
mongoDB 사용법  (2) 2017.10.09
MongoDB 설치법 (mac 기준)  (0) 2017.10.09
Comments