2026_최신기출유형_07회
-1. 2023남여비율 쿼리 0/7
-쿼리 비교 X [2023남여비율] 쿼리 (SELECT 응시학생수.지역, String((Sum([남])/Sum([학생수])*100)/10,"▣") AS 남자비율, String((Sum([여])/Sum([학생수])*100)/10,"▣") AS 여자비율 FROM 응시학생수 GROUP BY 응시학생수.지역, 응시학생수.년도 HAVING (((응시학생수.년도)=2023)); )이 정답(SELECT 응시학생수.지역, String((Sum([남])/Sum([학생수])*100)/10,"▣") AS 남자비율, String((Sum([여])/Sum([학생수])*100)/10,"▣") AS 여자비율 FROM 응시학생수 WHERE (((응시학생수.년도)=2023)) GROUP BY 응시학생수.지역; )과 다릅니다.
교재에 나와있는 정답이랑 한치의 오차도 없이 똑같이 풀이해서 답도 똑같이 나왔는데 이런식으로 틀리면 너무 억울한데 이런 문제는 어떻게 대처해야 하나요? 그리고 뭐가, 왜 틀린건가요? 교재와 똑같은 방식으로 풀어도 차이가 발생하는 이런 유형의 문제를 파악할수 있는 방법은 있는건가요?
안녕하세요.
이번 경우는 결과는 같아 보여도 쿼리 구조가 정답과 다릅니다. 핵심은 년도 필드의 요약 설정입니다.
작성한 쿼리는 년도를 묶는 방법으로 둔 상태에서 조건 2023을 입력해서 SQL이 다음처럼 만들어졌습니다.
GROUP BY 응시학생수.지역, 응시학생수.년도
HAVING 응시학생수.년도=2023
정답은 년도의 요약을 조건으로 설정해야 합니다.
WHERE 응시학생수.년도=2023
GROUP BY 응시학생수.지역
즉, 디자인 보기에서 다음처럼 설정해야 합니다.
년도 필드 → 요약: 조건 → 조건: 2023
결과가 같은 이유는 현재 데이터에서는 두 방식 모두 2023년 자료만 남기기 때문입니다. 하지만 내부적으로는 WHERE로 먼저 2023년 자료를 걸러낸 후 지역별 집계하는 것과 집계한 후 HAVING으로 거르는 것이라 쿼리 구조가 다릅니다.
이런 문제는 다음 기준으로 구분하시면 됩니다.
집계할 필요 없이 단순히 자료를 제한하는 조건 필드 → 요약을
조건으로 변경Sum,Avg,Count등의 집계 결과 자체에 조건을 거는 경우 → HAVING 사용
따라서 이 문제에서는 년도=2023이 단순 검색 조건이므로 조건으로 변경하는 것이 정확합니다.
교재와 동일하게 작업했다고 생각했는데 이런 차이가 생겼다면, 쿼리 디자인에서 요약 행의 설정을 꼭 확인하세요. 화면의 실행 결과만으로는 WHERE와 HAVING 차이를 발견하기 어렵습니다.
즐거운 하루 되세요.
-
관리자2026-08-07 14:33:26
안녕하세요.
이번 경우는 결과는 같아 보여도 쿼리 구조가 정답과 다릅니다. 핵심은
년도필드의 요약 설정입니다.작성한 쿼리는
년도를 묶는 방법으로 둔 상태에서 조건2023을 입력해서 SQL이 다음처럼 만들어졌습니다.GROUP BY 응시학생수.지역, 응시학생수.년도 HAVING 응시학생수.년도=2023정답은
년도의 요약을 조건으로 설정해야 합니다.WHERE 응시학생수.년도=2023 GROUP BY 응시학생수.지역즉, 디자인 보기에서 다음처럼 설정해야 합니다.
년도 필드 → 요약:
조건→ 조건:2023결과가 같은 이유는 현재 데이터에서는 두 방식 모두 2023년 자료만 남기기 때문입니다. 하지만 내부적으로는 WHERE로 먼저 2023년 자료를 걸러낸 후 지역별 집계하는 것과 집계한 후 HAVING으로 거르는 것이라 쿼리 구조가 다릅니다.
이런 문제는 다음 기준으로 구분하시면 됩니다.
집계할 필요 없이 단순히 자료를 제한하는 조건 필드 → 요약을
조건으로 변경Sum,Avg,Count등의 집계 결과 자체에 조건을 거는 경우 → HAVING 사용따라서 이 문제에서는
년도=2023이 단순 검색 조건이므로조건으로 변경하는 것이 정확합니다.교재와 동일하게 작업했다고 생각했는데 이런 차이가 생겼다면, 쿼리 디자인에서 요약 행의 설정을 꼭 확인하세요. 화면의 실행 결과만으로는
WHERE와HAVING차이를 발견하기 어렵습니다.즐거운 하루 되세요.