해결된 질문
액세스 문제 풀이 질문
추천 수 ( 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)
네, 좋은 질문입니다.
A 방법으로 하셔야 합니다. B방법이 안되는 것은 필드 크기와는 상관이 없습니다.
A 방법은 SELECT AVG 하는 함수가 따로 있는 것이 아닙니다. 이것은 하위 쿼리라고 하는 것입니다.
하위 쿼리에 대해서 설명하는 것은 Q/A로는 버겁습니다. 하위 쿼리라는 키워드로 검색을 좀 해 보시기 바랍니다.
SELECT AVG([MONTH]) FROM [휴가일수]
이 식은 하나의 쿼리입니다. '휴가일수' 테이블에서 'MONTH' 필드의 평균을 구하라는 뜻이죠.
결과는 하나의 값이 나오겠네요.
따라서, A 쿼리는 이 값보다 큰 것을 구하게 되는 것입니다.
B 쿼리는 이미 다른 것으로 묶여 있기 때문에.. Avg([MONTH]) 식의 값이 4.xx 가 아니라, 월차잔여일의 값이 표시됩니다.
이것보다 큰 값을 구하는 것이기 때문에 아예 나오지 않는 것이죠.
제가 첨부한 파일의 Q1-1을 보시면 잘 이해가 되실 것입니다.
요약계산 쿼리를 구할 때에는, 어쩔 수 없이 논리적으로 하위 쿼리를 사용해야 할 때가 있는데, 이것이 바로 이런 경우입니다.
게시판으로 설명드리기가 쉬운 것이 아니네요.
혹시, 보다 자세한 설명이 필요하다면 튜터링 서비스를 이용해 보시기 바랍니다.
의견 (0)