데이터베이스에서 자료를 뽑아야될경우 년단위,월단위,일단위등으로 자료를 뽑아야될경우가 있습니다. 관련부분에 대해서 알아보겠습니다. 먼저 테스트데이트베이스는 마이크로소프트에서 다운받아서 테스트 해보겠습니다. AdventureWorksL2019데이터베이스를 다운받아서 테스트 해보겠습니다.
다운로드 경로 : docs.microsoft.com/ko-kr/sql/samples/adventureworks-install-configure?view=sql-server-ver15&tabs=ssms
날짜별형식변환은 이전글쓰기내용중에서 cast,conver 부분을 참고하시면됩니다. 다음링크에서 참고하시기 바랍니다. 링크정보 : sosopro.tistory.com/48
SalesLT.Address테이블의 대한 데이터로 통계쿼리를 살펴보도록하겠습니다. 수정한일자에 대한 통계를 알아볼예정이며 일자별 CountryRegion에 개수에 대해 살펴보도록 하겠습니다.
1. 년단위 통계
년별로 도시주소가 수정된 개수에 대한 통계값입니다. convert함수를 이용하여 년단위로 출력하게합니다.
1
2
3
4
5
6
|
/****** Script for SelectTopNRows command from SSMS ******/
SELECT DATEPART(YYYY,ModifiedDate) date, CountryRegion,count(*) cnt
FROM [AdventureWorksLT2019].[SalesLT].[Address]
group by DATEPART(YYYY,ModifiedDate),CountryRegion
order by date
|
쿼리결과입니다.
2. 분기별 통계
분기별 통계시에는 quarter를 사용하면 분기별(1~4)로 구분되어서 출력이 가능합니다.
1
2
3
4
5
|
/****** Script for SelectTopNRows command from SSMS ******/
SELECT DATEPART(quarter,ModifiedDate) date, CountryRegion,count(*) cnt
FROM [AdventureWorksLT2019].[SalesLT].[Address]
group by DATEPART(quarter,ModifiedDate),CountryRegion
order by date
|
쿼리결과
3. 월단위 통계
DATEPART부분을 mm으로 하게 실행하면됩니다.
1
2
3
4
5
6
|
/****** Script for SelectTopNRows command from SSMS ******/
SELECT DATEPART(mm,ModifiedDate) date, CountryRegion,count(*) cnt
FROM [AdventureWorksLT2019].[SalesLT].[Address]
group by DATEPART(mm,ModifiedDate),CountryRegion
order by date
|
쿼리결과
4. 주간별통계
DATEPART부분을 ww으로 하게 실행하면됩니다. 년도별로 구분을 하기위해서 DATEPART(YYYY,ModifiedDate)을 두었고 해당 부분뒤에 DATEPART(ww,ModifiedDate),CountryRegion으로쿼리문을실행해보겠습니다.
1
2
3
4
5
|
/****** Script for SelectTopNRows command from SSMS ******/
SELECT DATEPART(YYYY,ModifiedDate),DATEPART(ww,ModifiedDate) , CountryRegion,count(*) cnt
FROM [AdventureWorksLT2019].[SalesLT].[Address]
group by DATEPART(YYYY,ModifiedDate), DATEPART(ww,ModifiedDate),CountryRegion
order by DATEPART(YYYY,ModifiedDate)
|
쿼리결과입니다
5. 일단위 통계
일단위 통계입니다. DD를 입력한후 group by를 해주면 일자별 통계가 출력가능합니다.
1
2
3
4
|
/****** Script for SelectTopNRows command from SSMS ******/
SELECT DATEPART(DD,ModifiedDate) DAY , CountryRegion,count(*) cnt
FROM [AdventureWorksLT2019].[SalesLT].[Address]
group by DATEPART(DD,ModifiedDate),CountryRegion
|
쿼리결과입니다. 테스트일자가 1일밖에 없어서 1일에 데이터만 출력됩니다.
5. DATEPART 정보
DATEPART부분의 인수에 해당하는 정보입니다. 적절하게 사용하셔서 통계자료를 만드시기 바랍니다.
참고,출처 : docs.microsoft.com/ko-kr/sql/t-sql/functions/datepart-transact-sql?view=sql-server-ver15
'프로그래밍 > DB' 카테고리의 다른 글
[DB] MSSQL SELECT INTO, INSERT INTO .. SELECT 사용방법 및 차이점 (0) | 2020.10.18 |
---|---|
[DB] MSSQL 데드락(교착상태) 해결방법 (2) | 2020.10.18 |
[DB] MSSQL 날짜변환함수 CAST,CONVERT (0) | 2020.10.16 |
[DB] MSSQL 데이터가져오기,내보내기(엑셀가져오기,엑셀내보내기) (0) | 2020.10.12 |
[DB] MSSQL 데이터베이스 다이어그램을 통하여 ERD작성 (0) | 2020.10.11 |