본문 바로가기

프로그래밍/MSSQL 정리필요

[DB_MSSQL] 일/주/월/년도/요일 별로 카운트

반응형

일별, 주별, 월별, 년도별, 요일별로 카운트를 계산해보자



DATEPART, DATENAME 함수를 이용한다.



일별/주별/월별/년도별/요일별 


-- 일 단위로 카운트
SELECT DATEPART(DAY, 날짜), COUNT(*)
FROM 테이블명
GROUP BY DATEPART(DAY, 날짜)
 
-- 주 단위로 카운트
SELECT DATEPART(WEEK, 날짜), COUNT(*)
FROM 테이블명
GROUP BY DATEPART(WEEK, 날짜)
 
-- 월 단위로 카운트
SELECT DATEPART(MONTH, 날짜), COUNT(*)
FROM 테이블명
GROUP BY DATEPART(MONTH, 날짜)
 
-- 년 단위로 카운트
SELECT DATEPART(YEAR, 날짜), COUNT(*)
FROM 테이블명
GROUP BY DATEPART(YEAR, 날짜)
 
-- 요일 단위로 카운트
SELECT DATENAME(DW, 날짜), COUNT(*)
FROM 테이블명
GROUP BY DATENAME(DW, 날짜)





  예제


WITH TEST_A (날짜) AS (
    SELECT '2017-01-01' UNION ALL
    SELECT '2017-02-01' UNION ALL
    SELECT '2017-02-16' UNION ALL
    SELECT '2017-02-22' UNION ALL
    SELECT '2018-03-01'
)
SELECT * FROM TEST_A





다음과 같은 데이터가 있을때, 해당 날짜들을 일별로 묶어서 카운트를 세보자


WITH TEST_A (날짜) AS (
    SELECT '2017-01-01' UNION ALL
    SELECT '2017-02-01' UNION ALL
    SELECT '2017-02-16' UNION ALL
    SELECT '2017-02-22' UNION ALL
    SELECT '2018-03-01'
)
SELECT DATEPART(DAY, 날짜) AS '날짜'
    , COUNT(*) AS 'Cnt'
FROM TEST_A
GROUP BY DATEPART(DAY, 날짜)



GROUP BY DATEPART(DAY, 날짜) 로 그룹화해서 COUNT(*)를 세면 된다.




반응형