2025_최신기출문제_2023년상시01
-5. 우수도서처리 쿼리 0/5
-쿼리 비교 X 파일에 [우수도서처리] 쿼리가 없습니다.
1. 답안을 확인해보니 하위쿼리에 where 부분이 적혀 있지 않습니다.
group by를 사용해서 하위쿼리를 작성할 때에는 where 부분을 생략해도 되는 건가요?
2. 조건을 where 과 having 중에서 어느 부분에 작성하는지 헷갈릴 때에는
어떤 기준으로 작성할 곳을 선택해야 하나요?
안녕하세요.
GROUP BY를 사용한다고 해서WHERE를 생략하는 것은 아닙니다.
WHERE와 HAVING은 사용하는 목적이 다릅니다.
WHERE: 그룹화하기 전에 조건에 맞는 레코드를 먼저 선택합니다.HAVING: 그룹화한 후 그룹별 집계 결과에 조건을 적용합니다.
따라서 하위 쿼리에서 그룹화만 수행하고 집계 결과에 대한 조건만 있다면 WHERE 없이 GROUP BY와 HAVING만 사용해도 됩니다. 반대로 집계 전에 특정 레코드만 조회해야 하는 조건이 있다면 WHERE를 사용해야 합니다.
WHERE와HAVING을 구분하는 가장 쉬운 기준은 집계 함수의 사용 여부입니다.
WHERE일반 필드 값을 조건으로 제한할 때 사용
학과='컴퓨터공학과'입고일자 Between ...Year([입고일자])=2025
HAVINGSum,Avg,Count,Max,Min등의 집계 결과를 조건으로 제한할 때 사용Sum([인원])>=30Count(*)>=5Avg([점수])>=80
즉, 집계 함수가 조건식에 들어가면 HAVING, 그렇지 않으면 WHERE를 사용한다고 기억하시면 대부분의 문제를 쉽게 구분할 수 있습니다.
즐거운 하루 되세요.
-
관리자2026-07-09 21:58:11
안녕하세요.
GROUP BY를 사용한다고 해서WHERE를 생략하는 것은 아닙니다.
WHERE와HAVING은 사용하는 목적이 다릅니다.WHERE: 그룹화하기 전에 조건에 맞는 레코드를 먼저 선택합니다.HAVING: 그룹화한 후 그룹별 집계 결과에 조건을 적용합니다.
따라서 하위 쿼리에서 그룹화만 수행하고 집계 결과에 대한 조건만 있다면
WHERE없이GROUP BY와HAVING만 사용해도 됩니다. 반대로 집계 전에 특정 레코드만 조회해야 하는 조건이 있다면WHERE를 사용해야 합니다.WHERE와HAVING을 구분하는 가장 쉬운 기준은 집계 함수의 사용 여부입니다.
WHERE일반 필드 값을 조건으로 제한할 때 사용
학과='컴퓨터공학과'입고일자 Between ...Year([입고일자])=2025
HAVINGSum,Avg,Count,Max,Min등의 집계 결과를 조건으로 제한할 때 사용Sum([인원])>=30Count(*)>=5Avg([점수])>=80
즉, 집계 함수가 조건식에 들어가면
HAVING, 그렇지 않으면WHERE를 사용한다고 기억하시면 대부분의 문제를 쉽게 구분할 수 있습니다.즐거운 하루 되세요.