[sql] SQL HAVING 절을 사용하여 그룹화된 데이터 중 여러 개의 조건에서 가장 높은 값 조회하기

SQL에서 HAVING 절은 그룹화된 데이터에 조건을 적용하여 특정 조건을 만족하는 그룹만을 결과로 반환할 수 있습니다. 이에 대한 예시로, 여러 개의 조건 중에서 각 그룹의 최대값을 가진 행을 찾는 방법을 살펴보겠습니다.

예시

다음은 orders 테이블이라는 테이블에서 customer_id에 따라 그룹화된 데이터에서 amountquantity의 최대값을 가진 행을 찾는 SQL 쿼리입니다.

SELECT customer_id, MAX(amount) AS max_amount, MAX(quantity) AS max_quantity
FROM orders
GROUP BY customer_id
HAVING MAX(amount) > 1000 AND MAX(quantity) > 5;

위 쿼리는 다음과 같은 작업을 수행합니다.

  1. orders 테이블에서 customer_id에 따라 데이터를 그룹화합니다.
  2. 각 그룹에서 amountquantity의 최대값을 찾습니다.
  3. HAVING 절을 사용하여 amount가 1000보다 크고 quantity가 5보다 큰 그룹만을 결과로 반환합니다.

이 쿼리를 실행하면 조건을 모두 만족하는 그룹의 customer_id, max_amount, max_quantity가 반환됩니다.

이러한 방식으로 SQL의 HAVING 절을 사용하여 여러 개의 조건에서 그룹화된 데이터의 최대값을 조회할 수 있습니다.

참조: SQL HAVING 절