배움터  
  HOME > 배움터 > Daily Tip
Daily Tip

제품:   Access 버전:   2003
검색어:   요약, 조회
제목:   날짜별로 요약하기: 월별, 주별, 분기별 (1)
     
 

New Page 2
  STEP> 따라하기

※ 아래 Daily Tip은 염기웅님이 제공해주신 내용입니다

오늘은 데이터베이스의 데이터를 날짜별로 요약해서 조회하는 방법에 대하여 알아보도록 하겠습니다. (예제파일 다운받기)

우선, 다음의 데이터를 살펴보기 바랍니다. 다음의 데이터는 Northwind 데이터베이스에서 수주 현황을 날짜별로 요약한 결과입니다. 날짜별로 요약하는 것은 그리 어렵지 않으므로 잘 할 수 있으리라 생각됩니다. 하지만 우리가 어떤 실적을 조회할 때는 날짜별로 요약하는 것이 크게 효용이 있지는 않습니다. 월별 실적을 보거나, 주별 혹은 분기별 실적을 보는 것이 더 효과가 있습니다.

다음은 이러한 데이터를 월별로 요약한 화면입니다. 월별로 수주 금액이 집계되어 한결 실적을 파악하는 데 도움이 되리라 여겨집니다.

다음은 주별로 요약한 데이터입니다.

다음은 분기별로 요약한 데이터입니다.

지금까지 살펴본 데이터는 모두 하나의 데이터 원본(Order 테이블, Order Details 테이블)에서 추출한 것입니다. 관계형 데이터베이스의 장점 중 하나가 융통성 있는 데이터 처리이며, 지금 살펴본 예제에서 이러한 것을 확인할 수 있습니다.

엑셀로 이러한 데이터 처리를 하는 것은 일반적으로 쉬운 일은 아닙니다. 물론 피벗 테이블 보기를 이용하면 자동으로 날짜를 월별, 분기별 등으로 요약해 주기는 하지만, 반드시 피벗 테이블 보기의 형태를 이용해야 하는 단점이 있습니다. 피벗 테이블 보기를 이용하지 않고 엑셀에서 이러한 데이터를 추출하는 작업은 그리 수월치 않습니다.

하지만 관계형 데이터베이스에서는 이러한 데이터의 ‘가공’이 상당히 원활히 이루어집니다. 이번 데일리 팁과 다음 데일리 팁에 걸쳐 이러한 내용에 대해서 알아보겠습니다.

1. 날짜별 데이터 요약

예제 파일에서 q001OrderAmountsByDate 쿼리를 디자인 보기로 열어보면 다음과 같습니다.

이런 방식으로 날짜 필드‘묶어’ 주고, 금액필드‘합쳐’주면 날짜별 금액 합계가 쉽게 구해집니다. 이 쿼리를 실행하면 다음과 같은 결과가 출력됩니다.

하지만 이제 욕심이 생기지요? 수주일로 요약하는 것이 아니고, 월별로 요약한 데이터를 보고 싶다는 생각이 문득 드네요.

2. 월별 데이터 요약

월별로 요약한 데이터를 보고 싶을 때는 다음과 같이 쿼리를 디자인 하면 됩니다. ( q002OrderAmountsByMonth1 쿼리 참조)

OrderMonth 라는 계산 필드에 주목하기 바랍니다. 이 필드는 OrderDate 라는 날짜 필드를 액세스에서 제공하는 함수를 이용해서 우리가 원하는 값으로 변형하는 계산 필드입니다. 데이터베이스에는 2004-07-01과 같은 날짜 데이터가 삽입됩니다. 하지만 우리가 원하는 값은 날짜가 아니지요.

데이터베이스에 저장된 값

궁극적으로 보고 싶은 값

2002-06-15

2002-06

2003-07-17

2003-07

2003-07-20

2003-07

이러한 형식으로 계산된 결과를 생각해 보기 바랍니다. 그러면 데이터베이스에 저장된 값으로 요약한다면 앞의 표에서는 총 3개의 요약된 결과가 출력될 테지만, 궁극적으로 보고 싶은 값으로 요약한다면 총 2개(‘2002-06’, ‘2003-07’)의 요약된 결과가 출력될 것입니다. 이것이 데이터베이스에서 요약하는 기본 개념입니다.

그래서 액세스에서 기본으로 제공해주는 Year 함수와 Month 함수를 이용하였습니다. Year 함수는 날짜 데이터에서 년도를 추출해 주는 함수이며, Month 함수는 월을 출력해 주는 함수입니다.

이 쿼리의 결과값은 다음과 같습니다.

큰 문제가 없나요? 수주월 필드가 우리가 원한대로 정렬 되지 않았습니다. 1996년 7월 데이터는 1996년 10월 데이터 앞에 위치해야 할 것으로 보입니다. 이는 ‘수주월’ 필드가 더 이상 날짜 필드가 아닌, 문자 데이터 속성을 갖는 필드이기 때문에 나타나는 결과입니다. 이를 방지하기 위해서는 1996-6 이라는 데이터를 1996-06 이라는 형식으로 표시해야 합니다. 이러한 문제를 해결하기 위한 방법은 다음 쿼리 디자인을 보기 바랍니다.

이번에는 OrderMonth 필드에 다른 함수를 이용해서 구현하였습니다. Format 함수를 이용하였는데, Format 함수는 입력된 값을 지정한 서식으로 변형해 줍니다. Format 함수는 그 사용방법이 상당히 많습니다. 액세스 도움말에서 Format을 입력하여 자세히 살펴보기 바랍니다.

이 식에서 yyyy-mm 이라고 써진 식을 주의깊게 살펴 보아야 합니다. 이 식의 의미는 OrderDate 날짜 필드를 년도-월 형식으로 표시하라는 의미를 가지고 있습니다. 이 쿼리의 결과는 다음과 같습니다.

이제 수주월 별로 잘 정렬되어 출력되는 것을 살펴볼 수 있습니다.

오늘은 날짜별로 요약하는 방법과 쿼리 필드를 변형하여 월별로 요약하는 방법에 대해서 알아보겠습니다. 다음 데일리 팁에서는 주별, 분기별로 요약하는 방법에 대해서 알아보도록 하겠습니다.

오늘 알아본 Year 함수, Month 함수, Format 함수는 상당히 자주 사용하는 함수들이므로 액세스 도움말에서 사용방법을 상세히 익혀두기 바랍니다. 액세스 함수의 전반적인 내용은 이전 데일리 팁에 자주 사용하는 액세스 함수라는 제목으로 소개된 적이 있으니 이 내용을 참조하기 바랍니다.