112ITQ 액세스 기출문제 풀이 - 쿼리 만들기, 2

 

환경: Microsoft Access 2013

 

기존 테이블에서 사용자가 원하는 데이터만 추출하기 위해서는 쿼리를 만들어야 합니다. 두 번째 문제는 데이터 추출을 위한 쿼리를 만들고 기존 테이블에 없던 새로운 필드를 추가는 방법에 대해 배울 것입니다. 필드는 액세스에서 지원하는 문법을 적용해서 다양한 조건을 표현할 것입니다. 그리고 이렇게 만든 쿼리는 저장했다가 재사용하는 것이 가능합니다.

 

◎ 문제

 

2. [테이블1:여행상품관리]를 이용하여 다음과 같은 조건에 따라 쿼리를 완성하시오. (90)

 

≪조건≫

(1) 쿼리 이름 : 여행상품관리현황

 

(2) 지역 : 상품번호의 첫 번째 글자가 ‘1’이면국내’, ‘2’이면동남아시아’, ‘3’이면일본’, ‘4’이면유럽’, 5’이면미주’, ‘6’이면호주로 적용(CHOOSE, LEFT 함수 사용)

 

(3) 총비용 :「가격 × (1+추가비율)」로 계산. , 추가비율은 기간이 ‘6’ 이상이면 ‘40%’, ‘3’ 이상이고 ‘5’ 이하이면 ‘20%’, 그렇지 않으면 ‘0’으로 적용(IIF 함수 사용)

 

(4) 결제마감일 : 출발일자의 2주전으로 계산하되 결과값이 일요일이면 다음날인 월요일로 적용(IIF, WEEKDAY, DATEADD 함수 사용)

 

(5) 총비용은 통화 형식, 결제마감일은 간단한 날짜 형식, 상품명에 대해 오름차순으로 정렬

112회 ITQ 액세스 기출문제 풀이 - 쿼리 만들기, 2부

 

◎ 해설

 

* 이번 포스팅은 3번과 4번에 대한 풀이 입니다.

 

(3) 총비용 :「가격 × (1+추가비율)」로 계산. , 추가비율은 기간이 ‘6’ 이상이면 ‘40%’, ‘3’ 이상이고 ‘5’ 이하이면 ‘20%’, 그렇지 않으면 ‘0’으로 적용(IIF 함수 사용)

 

두 번째로 새로 만들 필드는 총비용입니다. 기존 여행상품관리 테이블에는 없는 필드이므로 새로 만들어야 합니다. 총비용 필드를 만들기 위해 이용수단을 선택하고 열 삽입 리본 메뉴를 클릭합니다

112회 ITQ 액세스 기출문제 풀이 - 쿼리 만들기, 2부

 

작업을 좀더 편하게 하기 위해 큰 편집창을 열어 보겠습니다. [오른 마우스] > [확대/축소] 메뉴를 선택합니다

112회 ITQ 액세스 기출문제 풀이 - 쿼리 만들기, 2부

 

확대/축소 대화창에 다음 수식을 입력합니다. 수식은 IIF 라는 분기 함수를 사용하였습니다. 이 중으로 IIF 문으로 사용하였는데 [기간]>=6 이 참이면 0.4 , 거짓이면 IIf([기간]>=3,0.2,0) 을 선택합니다. IIf([기간]>=3,0.2,0) 은 또 다시 [기간]>=3 일 때 3 , 거짓이면 0을 반환합니다. 이렇게 구한 값은 +1 을 하고 [가격] 필드의 값과 곱해서 총 비용을 구합니다.

 

총비용: [가격]*(1+IIf([기간]>=6,0.4,IIf([기간]>=3,0.2,0)))

112회 ITQ 액세스 기출문제 풀이 - 쿼리 만들기, 2부

 

(4) 결제마감일 : 출발일자의 2주전으로 계산하되 결과값이 일요일이면 다음날인 월요일로 적용(IIF, WEEKDAY, DATEADD 함수 사용)

 

세 번째는 결제마감일을 계산하는 필드를 만들어야 합니다. 언제까지 결제를 해야 하는지 날짜를 계산해서 알려 주는 필드입니다. 결제일의 기본은 2주전이지만 일요일일 경우 다음날 월요일로 변경해야 하는 예외 조건이 있습니다. 작업을 좀더 편하게 하기 위해 큰 편집창을 열어 보겠습니다. [오른 마우스] > [확대/축소] 메뉴를 선택합니다

112회 ITQ 액세스 기출문제 풀이 - 쿼리 만들기, 2부

 

결제 마감일은 조금 복잡합니다. 일요일일 경우 다음날 월요일로 변경해야 하는 예외 조건이 들어가 있기 때문입니다. IIF 함수의 조건은 Weekday(DateAdd("ww",-2,[출발일자]))=1 입니다. 일요일 여부를 판단하는 식입니다. DateAdd 함수를 이용해서 2주를 뺀 날짜를 Weekday() 함수로 변환했을 때 1 이면 일요일인 것입니다. 일요일일 경우 다음날 월요일을 표시해야 되므로 DateAdd("ww",-2,[출발일자])+1 처럼 +1 을 하게 됩니다. 일요일이 아니면 2주를 뺀 날짜 그대로 표현을 해야겠죠.

 

결제마감일: IIf(Weekday(DateAdd("ww",-2,[출발일자]))=1,DateAdd("ww",-2,[출발일자])+1,DateAdd("ww",-2,[출발일자]))

112회 ITQ 액세스 기출문제 풀이 - 쿼리 만들기, 2부


Posted by 녹두장군

댓글을 달아 주세요