본문 바로가기

TIPS

WHERE vs HAVING의 차이 – 언제 어떤 걸 써야 할까?

728x90
반응형
SMALL

 

이번 할 포스팅은 난이도를 확 낮추어

sql의 기초개념을 설명하려고 합니다.

그러면 WHERE vs HAVING의 차이에 대해 포스팅 해보도록 하겠습니다.

 


개념 이해

 

  • WHERE:
  • 집계 함수 전 필터링
  • 쿼리에서 집계(Aggregate) 되기 이전개별 행(row) 을 필터링할 때 사용합니다.

 

  • HAVING:
  • 집계 함수 후 필터링
  • GROUP BY를 사용한 결과에 대해 집계 결과를 기준으로 필터링할 때 사용합니다.

 


예시로 이해하기

 

-- WHERE 사용 예시
SELECT name, department
FROM employees
WHERE department = 'IT';
 

💬 WHERE절은 각 직원의 부서가 IT인지를 개별 행 기준으로 필터링합니다.

 

-- HAVING 사용 예시
SELECT department, COUNT(*) AS emp_count
FROM employees
GROUP BY department
HAVING COUNT(*) > 5;
 

💬 HAVING절은 부서별 인원수를 먼저 구한 후, 인원수가 5명 초과인 부서만 필터링합니다.

 


혼용 금지 vs 혼용 가능

 

SELECT department, AVG(salary) AS avg_sal
FROM employees
WHERE salary > 3000
GROUP BY department
HAVING AVG(salary) > 5000;
 
  • WHERE salary > 3000: 집계 전에 개별 직원 필터링
  • HAVING AVG(salary) > 5000: 부서별 평균 급여가 5000 초과인 부서만 선택

 

이렇게 WHERE과 HAVING은 동시에 사용할 수 있습니다.

 


실무 팁
 
 
목적
사용 절
개별 행 필터링
WHERE
그룹 집계 결과 필터링
HAVING

 


마무리

 

 

728x90
반응형
LIST