패스잇
백엔드 개발 · 기초

GROUP BY와 HAVING 절의 차이점과 사용 방법에 대해 설명해주세요.

힌트 · WHERE와 HAVING의 실행 순서 차이를 생각해보세요.

GROUP BYHAVING집계 함수조건 필터링WHERE 절

모범답안

GROUP BY 절과 HAVING 절은 모두 SQL에서 데이터를 그룹화하고 필터링하는 데 사용되지만, 중요한 차이점이 있습니다.

GROUP BY 절은 특정 열을 기준으로 데이터를 그룹화합니다. 예를 들어, '부서별 평균 급여'를 구하려면 '부서' 열로 GROUP BY를 사용합니다.

HAVING 절은 GROUP BY로 그룹화된 결과에 대한 조건을 필터링합니다. WHERE 절은 개별 행에 대한 조건을 필터링하는 반면, HAVING 절은 그룹화된 결과에 대한 조건을 필터링합니다. 예를 들어, '평균 급여가 500만원 이상인 부서'를 찾으려면 HAVING 절을 사용합니다.

WHERE 절은 GROUP BY 절보다 먼저 실행되어 개별 행을 필터링하고, HAVING 절은 GROUP BY 절 이후에 실행되어 그룹화된 결과를 필터링합니다. 따라서 집계 함수(SUM, AVG, COUNT 등)를 사용하여 조건을 필터링하려면 HAVING 절을 사용해야 합니다.

예를 들어, 다음과 같은 쿼리를 생각해볼 수 있습니다.

SELECT 부서, AVG(급여) AS 평균급여
FROM 직원
GROUP BY 부서
HAVING AVG(급여) > 5000000;

이 쿼리는 '직원' 테이블에서 '부서'별로 그룹화한 후, '평균 급여'가 500만원 이상인 부서만 결과로 반환합니다.

읽었다면, 이제 직접 답해볼 차례예요

패스잇 앱에서 이 질문에 말로 답하면 AI가 꼬리질문까지 이어가며 1:1 코칭합니다.

함께 보는 데이터베이스 면접 질문

← 데이터베이스 면접 질문 전체 보기