책 내용 질문하기
예제 3번 재문의
도서
2024 시나공 정보처리기사 실기 기본서
페이지
47
조회수
124
작성일
2024-07-20
작성자
이*성
첨부파일

이전 문의 내용에서 SQL문을 잘못 적은 부분이 있어서 다시 작성합니다.


예제 내용이

"<상여금> 테이블에서 '상여금'이 100 이상인 사원이 2명 이상인 '부서'의 튜플 수를 구하시오"


인데, 이 내용대로라면

1. '상여금'이 100이상인 사원이 2명 이상인 '부서'에 대해서

2. 해당 '부서'의 튜플 수를 구하는 것

아닌가요?


그런데 예제 답안으로 적혀있는 SQL문은

1, '상여금'이 100 이상인 사원이 2명 이상인 '부서'에 대해서

2. '상여금'이 100 이상인 튜플 수를 구하는 결과

를 얻게 되어 있습니다.


예제에 대한 답안은 아래와 같은 SQL문이 더 적합한 것이 아닌지 문의드립니다.


SELECT 부서 AS 우수부서, COUNT(*) AS 사원수

FROM 상여금

WHERE 부서 IN (

SELECT 부서

FROM 상여금

WHERE 상여금 >= 100

GROUP BY 부서

HAVING COUNT(*) >= 2)

GROUP BY 부서;



예제 답안은, 상여금이 100 이상인 사원이 2명 이상인 부서 '기획'부의 상여금이 100 이상인 사원 수(튜플 수)를 구하고 있으며,

제가 예시로 드린 SQL문은 상여금이 100 이상인 사원이 2명 이상인 부서 '기획'부의 사원 수(튜플 수)를 구하고 있습니다.


만약 정보처리기사 실기 시험에서 저런 문제가 나온다면, 책에 적혀있는 답안대로 적는 것이 정답처리되는지, 아니면 제가 예시로 적은 SQL.문을 적는 것이 정답처리되는지 알고 싶습니다.

답변
2024-07-20 09:09:03

안녕하세요 길벗수험서 운영팀입니다.

회원님께서 말씀하신것처럼 작성을 하면 결과값이 다르게 나옵니다.

회원님께서는 하위질의를 이용하여 상여금이 100이상인 사원이 2명이상인 부서를 구하면 "기획"이 나옵니다

하위질의에서 "기획" 이나 온것을 적용해 결과값을 구하게 되면

아래 그림처럼 부서가 기획인 데이터는 총 4개가 있으니 사원수는 4명이 나옵니다


문제의 출제 의도는 상여금이 100이상인 사원이 2명 이상인 사원수를 구하는것이니

기획부는 총4명이지만 장길산의 상여금은 90이므로 제외하고 3명이 나와야 합니다


문제에 별도의 처리조건이 제시되지 않았다면 꼭 책에 쓰여져 있는것처럼 sql은 작성을 하지 않더라도 어떤 방식으로든 정확한 결과만 나오면 정답입니다.




54페이지의 답변입니다.

만약 문제가 전체 SQL문을 작성하는 문제였다면 회원님의 의문은 타당하나,

실제로 정확한 해석과 같이 SQL문을 구현하려면 하위 질의를 이용해야 하는 바,

이미 작성된 SQL문을 보면 문제가 요구하는 것이 조금 다르다는 것을 알 수 있습니다.

결국 where 문에는 "1000을 초과하는"

group by에서는 "도시에 대해"

count(*)>= 는 "세 군데 이상"

이라는 <조건>에 제시된 각 부분을 쪼개서 맞는 위치에 넣으라는 의도의 문제임을 파악할 수 있습니다.

문제 자체에 의문이 조금 있더라도 의도 자체를 해석하여 푸는 문제가 종종 등장할 수 있다는 점 염두에 두시고,

이와 같은 경우 가능한 문제 제작자의 의도에 따라 답안을 작성하는 것이 좋습니다.

행복한 하루되세요 :)

  • 관리자
    2024-07-20 09:09:03

    안녕하세요 길벗수험서 운영팀입니다.

    회원님께서 말씀하신것처럼 작성을 하면 결과값이 다르게 나옵니다.

    회원님께서는 하위질의를 이용하여 상여금이 100이상인 사원이 2명이상인 부서를 구하면 "기획"이 나옵니다

    하위질의에서 "기획" 이나 온것을 적용해 결과값을 구하게 되면

    아래 그림처럼 부서가 기획인 데이터는 총 4개가 있으니 사원수는 4명이 나옵니다


    문제의 출제 의도는 상여금이 100이상인 사원이 2명 이상인 사원수를 구하는것이니

    기획부는 총4명이지만 장길산의 상여금은 90이므로 제외하고 3명이 나와야 합니다


    문제에 별도의 처리조건이 제시되지 않았다면 꼭 책에 쓰여져 있는것처럼 sql은 작성을 하지 않더라도 어떤 방식으로든 정확한 결과만 나오면 정답입니다.




    54페이지의 답변입니다.

    만약 문제가 전체 SQL문을 작성하는 문제였다면 회원님의 의문은 타당하나,

    실제로 정확한 해석과 같이 SQL문을 구현하려면 하위 질의를 이용해야 하는 바,

    이미 작성된 SQL문을 보면 문제가 요구하는 것이 조금 다르다는 것을 알 수 있습니다.

    결국 where 문에는 "1000을 초과하는"

    group by에서는 "도시에 대해"

    count(*)>= 는 "세 군데 이상"

    이라는 <조건>에 제시된 각 부분을 쪼개서 맞는 위치에 넣으라는 의도의 문제임을 파악할 수 있습니다.

    문제 자체에 의문이 조금 있더라도 의도 자체를 해석하여 푸는 문제가 종종 등장할 수 있다는 점 염두에 두시고,

    이와 같은 경우 가능한 문제 제작자의 의도에 따라 답안을 작성하는 것이 좋습니다.

    행복한 하루되세요 :)

  • 이*성
    2024-07-20 10:58:58
    답변 감사합니다.
  • 이*성
    2024-07-20 06:03:15
    54P의 문제 6번에 대해서도 동일한 문의가 있습니다. 문제의 <조건>을 다음과 같이 수정해야 맞는 게 아닌지 궁금합니다. "매출액이 1,000을 초과하는 지점이 세 군데 이상 있는 도시에 대해 각 도시별로 그 도시에서 매출액이 1,000을 초과하는 지점들의 평균 매출액을 구하시오."
· 5MB 이하의 zip, 문서, 이미지 파일만 가능합니다.
· 폭언, 욕설, 비방 등은 관리자에 의해 경고없이 삭제됩니다.