2.12 HAVING

약 5분

본문 듣기
읽기 설정

글자 크기

줄 간격

글꼴

2.12 HAVING

데이터베이스에서 효율적으로 정보를 얻기 위해 다양한 쿼리를 작성할 줄 아는 것이 중요합니다. 특히, 데이터를 그룹화하여 집계하는 경우가 많은데, 이를 위해 GROUP BY를 사용하여 결과를 묶은 후 또다시 조건을 걸 수 있는 HAVING절을 사용합니다. HAVING절은 집계된 결과에 조건을 지정할 수 있게 해주며, 일반적인 WHERE절로는 집계 결과를 필터링할 수 없기 때문에 유용합니다.

1. 설명

HAVING절은 특정 카운트, 합계, 평균 등과 같은 집계 함수 결과에 조건을 걸어 데이터를 필터링하는 데 사용됩니다. 이는 GROUP BY절과 함께 사용되며, 집계 함수가 적용된 후의 데이터를 제한할 수 있습니다. 이는 데이터의 집합에 대한 조건이기 때문에 WHERE절보다 나중에 적용된다는 점이 특징입니다.

예를 들어, 판매 데이터가 있는 테이블에서 특정 제품이 일정 수량 이상 판매된 경우만 확인하고 싶다면 HAVING절을 사용하여 필터링 할 수 있습니다.

2. 예제

다음은 sales 테이블에서 각 제품의 총 판매량이 100개 이상인 제품을 조회하는 SQL 쿼리입니다.

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

이 쿼리는 각 제품별로 판매된 총 수량을 구한 후, 그 수량이 100개 이상인 경우만 결과로 보여줍니다.

실행 결과

product_id total_sales
1 150
2 120

3. 실습

  1. 테이블 생성: sales 테이블을 만들어 봅시다.
CREATE TABLE sales (
    id INT AUTO_INCREMENT PRIMARY KEY,
    product_id INT,
    quantity INT
);
  1. 데이터 삽입: 샘플 데이터를 삽입합니다.
INSERT INTO sales (product_id, quantity) VALUES
(1, 70),
(1, 80),
(2, 50),
(2, 40),
(3, 30);
  1. 쿼리 실행: 위 예제를 실행하여 각 제품의 총 판매량이 100개 이상인 제품을 조회합니다.

4. 프로젝트

실제 프로젝트에서 HAVING절을 활용하여 데이터를 필터링 해보겠습니다. 예를 들어, 쇼핑몰 프로젝트에서 특정 카테고리의 상품 판매 정보를 분석하여, 인기 있는 상품(판매량이 특정 기준 이상인)을 선정하는 기능을 구현할 수 있습니다.

5. 정리

HAVING절은 GROUP BY와 함께 사용하여 집계된 결과에 대한 조건을 설정할 수 있으며, 이는 데이터 분석 시 매우 유용합니다. SQL로 데이터베이스를 다루는 과정에서 HAVING절의 적절한 사용은 필수적입니다.

이제 여러분은 SQL에서 HAVING절을 사용하여 집계 결과를 필터링할 수 있습니다. 이 개념은 데이터베이스에서 복잡한 쿼리를 작성할 때 매우 중요합니다.

다음 단계에서는 JOIN을 통해 여러 테이블의 데이터를 연결하는 방법을 배워보겠습니다.

코드 sql
SELECT product_id, SUM(quantity) AS total_sales
FROM sales
GROUP BY product_id
HAVING SUM(quantity) >= 100;

댓글 0

댓글을 남기려면 로그인하세요.

아직 댓글이 없습니다. 첫 댓글을 남겨보세요.