2025_최신기출문제_2023년상시03
-1. 베스트셀러처리 쿼리 0/5
-쿼리 비교 X [베스트셀러처리] 쿼리 (UPDATE 저자 SET 저자.비고 = "베스트셀러" WHERE (((저자.저자코드) In (select 저자코드 from 도서 group by 저자코드 having count([저자코드])>=4))); )이 정답(UPDATE 저자 SET 저자.비고 = "베스트셀러" WHERE (((저자.저자코드) In (select 저자코드 from 도서 group by 저자코드 having count(도서코드) >=4))); )과 다릅니다.
having count(도서코드) >=4)
having 부분에 그룹에 대한 조건을 작성할 때 저자코드 필드가 아닌 도서코드 필드를 사용하는 이유가 무엇인가요?
문제에서 출판된 도서가 4개 이상인 저자의 필드 값을 업데이트한다고 제시되어 있어서 저자코드를 사용해야 한다고 생각했습니다.
안녕하세요.
이 문제에서는 ‘저자 수’가 아니라 ‘출판된 도서 수’를 세어야 하기 때문에 도서코드를 Count하는 것이 정확합니다.
GROUP BY 저자코드
HAVING Count(도서코드) >= 4의 의미는 저자코드별로 묶은 후, 각 저자가 출판한 도서가 4개 이상인지 확인하는 것입니다.
질문하신 것처럼
Count(저자코드) >= 4를 사용해도 도서 테이블의 저자코드에 Null이 없고 도서마다 저자코드가 들어 있다면 결과는 같을 수 있습니다. 하지만 이것은 저자코드가 입력된 레코드 수를 세는 방식입니다.
따라서 문제에서 “출판된 도서가 4개 이상”이라고 했으므로 그 개수를 직접 나타내는 도서코드를 사용하는 것이 가장 정확합니다.
핵심은 다음처럼 구분하시면 됩니다.
GROUP BY 저자코드→ 누구별로 셀 것인가? → 저자별Count(도서코드)→ 무엇을 셀 것인가? → 출판된 도서 수
따라서 저자별로 묶는다고 해서 Count에도 반드시 저자코드를 사용하는 것은 아닙니다.
즐거운 하루 되세요.
-
관리자2026-08-18 18:28:14
안녕하세요.
이 문제에서는 ‘저자 수’가 아니라 ‘출판된 도서 수’를 세어야 하기 때문에
도서코드를 Count하는 것이 정확합니다.GROUP BY 저자코드 HAVING Count(도서코드) >= 4의 의미는 저자코드별로 묶은 후, 각 저자가 출판한 도서가 4개 이상인지 확인하는 것입니다.
질문하신 것처럼
Count(저자코드) >= 4를 사용해도
도서테이블의저자코드에 Null이 없고 도서마다 저자코드가 들어 있다면 결과는 같을 수 있습니다. 하지만 이것은 저자코드가 입력된 레코드 수를 세는 방식입니다.따라서 문제에서 “출판된 도서가 4개 이상”이라고 했으므로 그 개수를 직접 나타내는
도서코드를 사용하는 것이 가장 정확합니다.핵심은 다음처럼 구분하시면 됩니다.
GROUP BY 저자코드→ 누구별로 셀 것인가? → 저자별Count(도서코드)→ 무엇을 셀 것인가? → 출판된 도서 수따라서 저자별로 묶는다고 해서 Count에도 반드시 저자코드를 사용하는 것은 아닙니다.
즐거운 하루 되세요.