이전 문의 내용에서 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.문을 적는 것이 정답처리되는지 알고 싶습니다.
안녕하세요 길벗수험서 운영팀입니다.
회원님께서 말씀하신것처럼 작성을 하면 결과값이 다르게 나옵니다.
회원님께서는 하위질의를 이용하여 상여금이 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:1554P의 문제 6번에 대해서도 동일한 문의가 있습니다. 문제의 <조건>을 다음과 같이 수정해야 맞는 게 아닌지 궁금합니다. "매출액이 1,000을 초과하는 지점이 세 군데 이상 있는 도시에 대해 각 도시별로 그 도시에서 매출액이 1,000을 초과하는 지점들의 평균 매출액을 구하시오."