2024_최종모의고사_02회
-1. 인기과목처리 쿼리 0/7
-쿼리 비교 X [인기과목처리] 쿼리 (UPDATE 과목 INNER JOIN 과외내역 ON 과목.과목ID = 과외내역.과목ID SET 과목.비고 = "인기과목" WHERE (((과목.과목ID) In (select 과목ID FROM 과외내역 GROUP BY 과목ID HAVING SUM([계약수업일수])>=700))); )이 정답(UPDATE 과목 SET 과목.비고 = "인기과목" WHERE (((과목.과목ID) In (select 과목ID from 과외내역 group by 과목ID having sum(계약수업일수) >= 700))); )과 다릅니다.
>>왜 틀렸을까요?
안녕하세요.
작성하신 쿼리와 정답 쿼리는 형태는 다르지만, 조건에 맞는 과목ID의 비고를 "인기과목"으로 변경한다는 점에서는 같은 결과가 나올 수 있습니다.
작성하신 쿼리는 과목 테이블과 과외내역 테이블을 INNER JOIN한 후 다시 IN 하위 쿼리로 조건을 지정한 형태이고, 정답은 과목 테이블만 UPDATE 대상으로 지정한 뒤 IN 하위 쿼리에서 과외내역을 참조한 형태입니다.
이 문제에서는 이미 하위 쿼리에서 과외내역 테이블을 이용해 과목별 계약수업일수 합계를 구하고 있으므로, 바깥쪽 UPDATE 문에서 과외내역 테이블을 다시 조인할 필요가 없습니다. 따라서 정답과 같이 작성하는 것이 더 간결하고 문제의 의도에도 적합합니다.
또한 채점 프로그램은 정답 쿼리와 구조나 설정을 비교하는 방식이므로, 실행 결과가 같더라도 불필요한 INNER JOIN이 추가되면 정답과 다르게 판단될 수 있습니다.
따라서 이 경우에는 다음과 같이 정답 형태로 작성하는 것이 안전합니다.
UPDATE 과목 SET 과목.비고 = "인기과목" WHERE 과목.과목ID In (SELECT 과목ID FROM 과외내역 GROUP BY 과목ID HAVING SUM(계약수업일수) >= 700);
즐거운 하루 되세요.
-
관리자2026-09-28 16:35:25
안녕하세요.
작성하신 쿼리와 정답 쿼리는 형태는 다르지만, 조건에 맞는
과목ID의비고를"인기과목"으로 변경한다는 점에서는 같은 결과가 나올 수 있습니다.작성하신 쿼리는
과목테이블과과외내역테이블을INNER JOIN한 후 다시IN하위 쿼리로 조건을 지정한 형태이고, 정답은과목테이블만 UPDATE 대상으로 지정한 뒤IN하위 쿼리에서과외내역을 참조한 형태입니다.이 문제에서는 이미 하위 쿼리에서
과외내역테이블을 이용해 과목별계약수업일수합계를 구하고 있으므로, 바깥쪽 UPDATE 문에서과외내역테이블을 다시 조인할 필요가 없습니다. 따라서 정답과 같이 작성하는 것이 더 간결하고 문제의 의도에도 적합합니다.또한 채점 프로그램은 정답 쿼리와 구조나 설정을 비교하는 방식이므로, 실행 결과가 같더라도 불필요한
INNER JOIN이 추가되면 정답과 다르게 판단될 수 있습니다.따라서 이 경우에는 다음과 같이 정답 형태로 작성하는 것이 안전합니다.
UPDATE 과목 SET 과목.비고 = "인기과목" WHERE 과목.과목ID In (SELECT 과목ID FROM 과외내역 GROUP BY 과목ID HAVING SUM(계약수업일수) >= 700);즐거운 하루 되세요.