[SQL]쿼리에 HAVING 절이 있는 경우 SLEECT 절에 집계 함수가 포함되어야 할까?

Hyunjun Kim·2024년 10월 11일
0

SQL

목록 보기
16/90

SQL의 HAVING 절과 집계 함수(Aggregate Function) 관계 정리

질문

HAVING 절이 포함된 SQL 쿼리에서는 SELECT 절에 집계 함수가 반드시 포함되어야 하는가?
→ 정답: 거짓(False)

개념 요약

  • HAVING 절은 GROUP BY에 의해 그룹화된 데이터에 대해 집계 함수의 결과를 기준으로 필터링할 때 사용된다.
  • WHERE 절은 집계 전에 각 행을 필터링하고, HAVING 절은 집계 후 필터링을 수행한다.
  • HAVING 절에서 사용된 집계 함수는 반드시 SELECT 절에 나타날 필요는 없다.


예제 1: 집계 함수를 SELECT 절에 포함한 경우

SELECT department, COUNT(employee_id) AS emp_count
FROM employees
GROUP BY department
HAVING COUNT(employee_id) > 5;
  • 이 쿼리는 각 부서의 사원 수를 계산하고, 그 수가 5명을 초과하는 부서만 필터링하여 결과를 출력한다.
  • COUNT(employee_id) 집계 함수는 SELECT 절과 HAVING 절 모두에 사용되었다.


예제 2: 집계 함수를 SELECT 절에 포함하지 않은 경우

SELECT department
FROM employees
GROUP BY department
HAVING COUNT(employee_id) > 5;
  • 이 쿼리는 사원 수가 5명 초과인 부서명만 출력한다.
  • COUNT(employee_id)HAVING 절에만 사용되며, SELECT 절에는 포함되지 않았다.
  • 이처럼 집계 결과를 출력하지 않고도 필터링 기준으로는 활용 가능하다.


주의사항

항목설명
HAVING반드시 GROUP BY와 함께 사용해야 하는 것은 아니지만, 일반적으로는 그룹화된 데이터에 적용한다.
집계 함수SUM, AVG, COUNT, MIN, MAX 등과 같은 함수들이 이에 해당한다.
필터링 목적집계된 값을 기준으로 행을 걸러낼 때 HAVING이 사용된다.


결론

  • HAVING 절은 집계 함수의 결과에 대한 조건 필터링을 수행한다.
  • 하지만 집계 함수가 HAVING 절에 사용되었다고 해서, 반드시 SELECT 절에도 포함될 필요는 없다.
  • SELECT 절에 집계 함수를 포함할지는 결과에 그 값을 출력할 필요가 있는지에 따라 결정된다.


최종 정답

HAVING 절이 포함된 SQL 쿼리에서는 SELECT 절에 집계 함수가 반드시 포함되어야 한다.거짓(False)

이유: HAVING 절은 집계 결과를 필터링하는 역할을 하지만, 그 기준이 되는 집계 함수가 반드시 출력 대상(SELECT)에 포함되어야 하는 것은 아니기 때문이다.

profile
Data Analytics Engineer 가 되

0개의 댓글