해결된 질문

액세스 문제 풀이 질문

gang1101 2013.10.02 05:00 Given Points 0
추천 수 ( 0 )

안녕하세요?

문제를 풀어보다가 질문이 생겨서 글 씁니다. 문제는 아래와 같습니다.

 

Q. [직원정보],[휴가일수] table을 이용하여 전체직원의 평균 월차일수보다 많은 직원을 고유번호가 빠른 순서대로 구할 수 있는 [Q1]을 작성하시오

 

첨부파일 보시면 아시겠지만 [직원정보],[부서],[휴가일수] 세 개의 테이블이 있고, 제가 만든 Q1이 있습니다.

[휴가일수]라는 테이블에 각 직원마다의 월차일수가 저장된 [month]라는 필드가 있고 그 평균값보다 큰 직원을 찾으면 되는 겁니다.

 

첨부파일에 제가 디자인한 쿼리(B.JPG, B_RESULT.JPG)와 답안의 쿼리(A.JPG, A_RESULT.JPG)가 있습니다.

 

 B 방법으로 하면 어째서 안 되는 것인지요? B에서 month  실수(double)로 정의되어 필드 크기가 안 맞아서 안되는 것인지요? 안 되는 이유를 설명해주시면 감사하겠습니다.

또한 풀이에서 제시한 방법(A) SELECT AVG라는 함수를 모르면 사용할 수 없는데 다른 쉬운 방법이 없을지요?

[휴가일수] 테이블에서 '요약'을 해서 평균(4.XXX)을 구한 다음에 조건에 >4.XXX 라고 입력하면 원하는 값이 표출됩니다만 문제에서 요구하는 풀이 방법이 아닌 것 같아서 만점을 받진 못할 것 같습니다.

 

감사합니다.

답변등록

질문자 선택 답변 보기

답변 (1)

돌직구 2013.10.02 17:34
질문자로부터 선택받은 답변입니다

네, 좋은 질문입니다.

 

A 방법으로 하셔야 합니다. B방법이 안되는 것은 필드 크기와는 상관이 없습니다.

A 방법은 SELECT AVG 하는 함수가 따로 있는 것이 아닙니다. 이것은 하위 쿼리라고 하는 것입니다.

하위 쿼리에 대해서 설명하는 것은 Q/A로는 버겁습니다. 하위 쿼리라는 키워드로 검색을 좀 해 보시기 바랍니다.

 

SELECT AVG([MONTH]) FROM [휴가일수]

 

이 식은 하나의 쿼리입니다. '휴가일수' 테이블에서 'MONTH' 필드의 평균을 구하라는 뜻이죠.

결과는 하나의 값이 나오겠네요.

 

따라서, A 쿼리는 이 값보다 큰 것을 구하게 되는 것입니다.

 

B 쿼리는 이미 다른 것으로 묶여 있기 때문에.. Avg([MONTH]) 식의 값이 4.xx 가 아니라, 월차잔여일의 값이 표시됩니다.

이것보다 큰 값을 구하는 것이기 때문에 아예 나오지 않는 것이죠.

 

제가 첨부한 파일의 Q1-1을 보시면 잘 이해가 되실 것입니다.

OATEST.zip

 

요약계산 쿼리를 구할 때에는, 어쩔 수 없이 논리적으로 하위 쿼리를 사용해야 할 때가 있는데, 이것이 바로 이런 경우입니다.

 

게시판으로 설명드리기가 쉬운 것이 아니네요.

 

혹시, 보다 자세한 설명이 필요하다면 튜터링 서비스를 이용해 보시기 바랍니다.

1 person rated this as good



  주소  12925 경기도 하남시 미사대로 540, B동 917호 (현대지식산업센터 한강미사2차) ㈜팀데이터이십일  |  고객센터 전화번호  02-467-2998  |  대표이사  염기웅
개인정보관리책임자  염기웅 (ml_privacy@td21.com)  |  사업자등록번호  120-86-79260  |  통신판매업신고번호  제 2021-경기하남-1166 호  [사업자 정보 확인]
  TD21의 사전 서면 동의 없이 TD21 사이트 일체의 정보, 콘텐츠 및 UI 등을 상업적 목적으로 전시, 전송, 스크래핑 등 무단 사용할 수 없습니다.