[sql] SQL HAVING 절을 사용하여 서브쿼리 내에 집계 함수 사용하기

SQL에서 HAVING 절을 사용하여 그룹화된 결과에 조건을 적용할 수 있습니다. 이는 특정 집계 함수의 결과를 필터링하고 특정 조건을 충족하는 그룹을 반환할 때 유용합니다. 이번에는 HAVING 절을 서브쿼리 내에 사용하여 집계 함수의 결과를 기준으로 데이터를 필터링하는 방법에 대해 살펴보겠습니다.

필요한 권한

이 연습을 따라하기 위해서는 SELECTHAVING 절을 사용할 수 있는 적절한 권한이 있는 SQL 데이터베이스에 액세스해야 합니다.

예제

다음은 주문 데이터를 저장하는 테이블인 orders와 해당 주문에 속하는 제품 데이터를 저장하는 테이블인 orderDetails 테이블의 간단한 구조입니다.

orders 테이블

order_id customer_id order_date
1 101 2021-01-05
2 102 2021-02-15
3 103 2021-03-20

orderDetails 테이블

order_id product_id quantity
1 1 5
1 2 3
2 3 2
3 1 4
3 2 5

이제, orderDetails 테이블에서 각 주문별로 제품의 총 수량을 계산하고 이를 기준으로 특정 조건을 만족하는 주문만을 가져오는 예제를 살펴보겠습니다.

SELECT order_id, SUM(quantity) AS total_quantity
FROM orderDetails
GROUP BY order_id
HAVING SUM(quantity) > 5;

위의 SQL 쿼리는 orderDetails 테이블을 order_id로 그룹화한 후, 각 그룹별로 제품의 총 수량을 계산합니다. 그런 다음, HAVING 절을 사용하여 제품의 총 수량이 5보다 큰 주문만을 선택합니다.

요약

이번 글에서는 HAVING 절을 사용하여 서브쿼리 내에 집계 함수를 사용하는 방법에 대해 간략하게 소개했습니다. 이를 통해 특정 조건을 충족하는 그룹을 선택하기 위해 코드를 보다 쉽게 작성할 수 있습니다. SQL에서 HAVING 절을 사용하는 방법에 대해 더 알아보고 싶다면, 관련 문서 및 자습서를 참조하시기 바랍니다.

참고 자료