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
|
마무리
SQL을 효율적으로 쓰기 위해선 단순히 결과를 맞추는 게 아니라,
의미에 맞는 절을 정확히 쓰는 것이 중요합니다.
학스의 개발일지
일상과 코딩 그 사이 어딘가에있는 블로그.. 블로거이자 빅데이터개발자 학스 입니다 JAVA, jQuery, PostgreSQL, MySQL, HIVE, Hadoop 더 많은 정보는 깃허브 주소 https://github.com/hacs2772 를 방문해주세요
hacs2772.tistory.com
728x90
반응형
LIST
'TIPS' 카테고리의 다른 글
| 실무용 페이징 전략! OFFSET/LIMIT를 넘어 Keyset Pagination까지 (4) | 2025.09.01 |
|---|---|
| 다양한 x + JOIN 차이 언제 어떤 걸 써야 할까? (6) | 2025.08.25 |
| 실무에서 인덱스를 똑똑하게 활용하는 전략 (심화편) (14) | 2025.08.11 |
| 실무에서 바로 써먹는 SQL 쿼리 성능 개선 팁 (10) | 2025.08.04 |
| 실무에서 자주 쓰이지만 까다로운 SQL 문법 정리 (8) | 2025.07.28 |