MariaDB HAVING 절

찌끅·2024년 10월 14일

MariaDB HAVING 절

Having 절은 SQL에서 집계 함수와 함께 사용되어 그룹화된 결과에 대해 조건을 지정하는 데 사용된다. HAVINGGROUP BY 절과 함꼐 사용되며, 주로 집계된 결과에 필터를 적용하기 위해 사용된다. 이와 같은 역할을 하는 WHERE 절과의 차이점을 이해하는 것이 중요하다.

HAVING 절의 사용

  1. 집계 함수: HAVING 절은 집계 함수(예: SUM, AVG, COUNT 등)를 사용할 수 있다. 반면에 WHERE 절은 집계 함수와 함께 사용할 수 없다.
  2. 그룹화된 데이터: HAVINGGROUP BY 절에 의해 생성된 그룹에 대해 조건을 지정한다. 즉, 그룹화된 결과 집합을 필터링하는 데 사용된다.

기본 문법

SELECT column1, aggregate_function(column2)
FROM table_name
GROUP BY column1
HAVING aggregate_function(column2) condition;

예제

에제 1: 기본 사용법
sales 테이블이 다음과 같은 구조를 가지고 있다고 가정한다.

이제 각 제품의 총 판매량이 5개 이상인 제품을 조회하고 싶다고 가정해 보겠다.

SELECT product_id, SUM(quantity) AS total_quantity
FROM sales
GROUP BY product_id
HAVING SUM(quantity) >= 5;

작동 방식
1. GROUP BY 절: product_id를 기준으로 데이터를 그룹화한다.
2. SUM(quantity): 각 제품별로 판매된 총 수량을 계산한다.
3. HAVING 절: 총 수량이 5개 이상인 그룹만 필터링한다.

예제 2: 평균 급여를 사용한 예
employees 테이블에서 각 부서의 평균 급여가 60000 이상인 부서를 찾고 싶다고 가정해 보겠다.

SELECT department_id, AVG(salary) AS average_salary
FROM employees
GROUP BY department_id
HAVING AVG(salary) >= 60000;

설명
1. GROUP BY department_id: 각 부서별로 그룹화한다.
2. AVG(salary): 각 부서의 평균 급여를 계산한다.
3. HAVING 절: 평균 급여가 60000 이상인 부서만 결과에 포함된다.

WHERE와 HAVING의 차이

  • WHERE: 데이터 집합을 그룹화하기 전에 필터링한다. 집계 함수와 함께 사용할 수 없다.
  • HAVING: 집계된 결과에 대해 조건을 적용한다. 집계 함수와 함꼐 사용된다.

0개의 댓글