SQL HAVING 사용법 완벽 정리|WHERE와 차이점부터 SQLD 시험 대비까지

요약

SQL HAVING은 GROUP BY로 그룹화된 결과에 조건을 적용할 때 사용하는 SQL 문법입니다. 많은 초보자가 WHERE와 HAVING을 헷갈리지만 적용 시점과 목적이 다릅니다. SQLD 시험에서도 자주 출제되는 핵심 개념이므로 정확하게 이해하는 것이 중요합니다.

SQL HAVING이란?

SQL HAVING은 GROUP BY를 통해 그룹화된 결과에 조건을 적용하는 SQL 문법입니다.

데이터를 조회할 때는 WHERE를 사용하지만, 그룹화된 결과를 필터링할 때는 SQL HAVING을 사용해야 합니다.

예를 들어 부서별 직원 수를 계산한 후 직원 수가 5명 이상인 부서만 조회하고 싶다면 SQL HAVING을 사용해야 합니다.

SQL HAVING은 집계 함수와 함께 사용되는 경우가 많으며 SQLD 시험에서도 중요한 출제 영역입니다. 더 많은 정보를 확인하고 SQL HAVING 개념을 익혀보세요.

SQL HAVING이 필요한 이유

다음과 같은 직원 데이터가 있다고 가정해보겠습니다.

이름부서번호
SMITH10
ALLEN10
WARD20
JONES20
KING20

부서별 직원 수를 계산하면 다음과 같습니다.

부서번호직원수
102
203

여기서 직원 수가 3명 이상인 부서만 조회하고 싶다면 SQL HAVING을 사용해야 합니다.

SQL HAVING은 그룹화 이후에 조건을 적용하기 때문에 집계 결과를 필터링할 수 있습니다. 더 많은 정보를 확인하고 SQL 처리 순서를 이해해보세요.

SQL HAVING 기본 문법

SQL HAVING 기본 문법은 다음과 같습니다.

SELECT 컬럼명,
       집계함수
FROM 테이블명
GROUP BY 컬럼명
HAVING 조건식;

예제

SELECT DEPTNO,
       COUNT(*)
FROM EMP
GROUP BY DEPTNO
HAVING COUNT(*) >= 3;

위 SQL HAVING은 직원 수가 3명 이상인 부서만 조회합니다.

SQL HAVING은 반드시 GROUP BY와 함께 사용하는 경우가 대부분입니다. 더 많은 정보를 확인하고 SQL HAVING 문법을 익혀보세요.

WHERE와 HAVING 차이점

SQLD 시험에서 가장 많이 출제되는 부분입니다.

많은 수험생이 SQL HAVING과 WHERE를 혼동합니다.

구분WHEREHAVING
적용 시점그룹화 전그룹화 후
집계 함수 사용불가능가능
필터 대상개별 행(Row)그룹(Group)
SQLD 출제 빈도매우 높음매우 높음

예를 들어 급여가 2000 이상인 직원을 조회하려면 WHERE를 사용합니다.

SELECT *
FROM EMP
WHERE SAL >= 2000;

반면 부서별 평균 급여가 2000 이상인 부서를 조회하려면 SQL HAVING을 사용해야 합니다.

SELECT DEPTNO,
       AVG(SAL)
FROM EMP
GROUP BY DEPTNO
HAVING AVG(SAL) >= 2000;

더 많은 정보를 확인하고 SQL HAVING과 WHERE 차이를 이해해보세요.

COUNT 함수와 HAVING 사용하기

가장 자주 사용하는 SQL HAVING 예제입니다.

SELECT DEPTNO,
       COUNT(*)
FROM EMP
GROUP BY DEPTNO
HAVING COUNT(*) >= 5;

결과 예시

부서번호직원수
205
306

SQL HAVING은 집계 결과를 조건으로 사용할 수 있다는 점이 핵심입니다.

더 많은 정보를 확인하고 SQL HAVING 활용법을 익혀보세요.

SUM 함수와 HAVING 사용하기

부서별 급여 합계가 일정 금액 이상인 경우를 조회할 수 있습니다.

SELECT DEPTNO,
       SUM(SAL)
FROM EMP
GROUP BY DEPTNO
HAVING SUM(SAL) >= 10000;

결과 예시

부서번호급여합계
2010875

SQL HAVING은 매출 분석, 생산량 분석, 재고 분석에서도 자주 사용됩니다.

더 많은 정보를 확인하고 데이터 분석 SQL을 학습해보세요.

AVG 함수와 HAVING 사용하기

평균값 조건도 자주 출제됩니다.

SELECT DEPTNO,
       AVG(SAL)
FROM EMP
GROUP BY DEPTNO
HAVING AVG(SAL) >= 2500;

결과 예시

부서번호평균급여
102916

SQL HAVING은 집계 함수와 함께 사용될 때 진가를 발휘합니다.

더 많은 정보를 확인하고 SQL 집계 분석 능력을 향상시켜보세요.

SQL HAVING 처리 순서

SQLD 시험에서는 SQL 실행 순서를 묻는 문제도 자주 출제됩니다.

실제 처리 순서는 다음과 같습니다.

  1. FROM
  2. WHERE
  3. GROUP BY
  4. HAVING
  5. SELECT
  6. ORDER BY

예를 들어 SQL HAVING은 GROUP BY 이후에 실행됩니다.

이 순서를 이해하면 SQLD 문제 풀이가 훨씬 쉬워집니다.

더 많은 정보를 확인하고 SQL 실행 순서를 정리해보세요.

SQL HAVING 사용 시 자주 하는 실수

초보자가 SQL HAVING을 사용할 때 자주 하는 실수는 다음과 같습니다.

집계 함수를 WHERE에 작성

잘못된 예시

SELECT DEPTNO,
       COUNT(*)
FROM EMP
WHERE COUNT(*) >= 3
GROUP BY DEPTNO;

위 SQL은 오류가 발생합니다.

올바른 SQL은 다음과 같습니다.

SELECT DEPTNO,
       COUNT(*)
FROM EMP
GROUP BY DEPTNO
HAVING COUNT(*) >= 3;

SQL HAVING은 집계 함수 조건에 사용해야 합니다.

더 많은 정보를 확인하고 SQL 오류를 예방해보세요.

SQL HAVING과 ORDER BY 함께 사용하기

실무에서는 SQL HAVING과 ORDER BY를 함께 사용하는 경우가 많습니다.

SELECT DEPTNO,
       COUNT(*) AS CNT
FROM EMP
GROUP BY DEPTNO
HAVING COUNT(*) >= 3
ORDER BY CNT DESC;

위 SQL은 직원 수가 많은 순서대로 정렬합니다.

실제 데이터 분석 업무에서도 매우 자주 사용되는 패턴입니다.

더 많은 정보를 확인하고 SQL 실무 활용법을 익혀보세요.

SQLD 시험에서 HAVING이 중요한 이유

SQLD 시험에서는 SQL HAVING 관련 문제가 꾸준히 출제됩니다.

특히 다음 개념은 반드시 이해해야 합니다.

출제 포인트중요도
HAVING 개념매우 높음
WHERE와 차이매우 높음
COUNT + HAVING매우 높음
SUM + HAVING높음
AVG + HAVING높음
SQL 실행 순서매우 높음

실제 SQLD 기출문제를 보면 SQL HAVING 관련 문제가 거의 매회 등장합니다.

더 많은 정보를 확인하고 SQLD 핵심 개념을 학습해보세요.

자주 묻는 질문(FAQ)

SQL HAVING 없이 GROUP BY만 사용할 수 있나요?

네 가능합니다. SQL HAVING은 그룹화된 결과에 추가 조건이 필요할 때만 사용합니다. 더 많은 정보를 확인하고 GROUP BY 활용법을 익혀보세요.

SQL HAVING에서 집계 함수를 꼭 사용해야 하나요?

대부분 집계 함수와 함께 사용하지만 상황에 따라 그룹 컬럼 조건도 사용할 수 있습니다. 더 많은 정보를 확인하고 SQL 활용 범위를 넓혀보세요.

SQLD 시험에서 HAVING 문제가 많이 나오나요?

네. WHERE와 HAVING 차이 문제는 SQLD 단골 출제 유형입니다. 더 많은 정보를 확인하고 SQLD 기출문제를 분석해보세요.

마무리

SQL HAVING은 GROUP BY 결과에 조건을 적용하기 위한 핵심 SQL 문법입니다. 특히 WHERE와의 차이점, 집계 함수 사용법, SQL 실행 순서는 SQLD 시험에서 반드시 이해해야 하는 개념입니다. SQL HAVING을 충분히 연습하면 데이터 분석과 실무 SQL 작성 능력을 크게 향상시킬 수 있습니다. 더 많은 정보를 확인하고 다음 단계인 SQL 서브쿼리 사용법도 함께 학습해보세요.

관련 글 보기