MySQL

MySQL - GROUP BY HAVING

코딩하는 하프물범 2024. 7. 27. 18:55

GROUP BYHAVING

개념

  • MySQL에서 데이터를 그룹화하고 그룹화된 데이터에 조건을 적용할 때 사용
  • GROUP BY는 데이터를 그룹화하는 데 사용
  • `HAVING'절은 그룹화된 결과에 조건을 적용하는 데 사용
  • HAVING절은 WHERE절과 비슷하지만,
    WHERE절은 그룹화 전에 데이터를 필터링하고,
    HAVING절은 그룹화 후에 데이터를 필터링함

예제

Sales 테이블

Region SalesAmount
East 100
West 200
East 150
West 250
North 300

지역별 총 판매액을 계산한다는 쿼리를 나타낸다면

SELECT Region, SUM(SalesAmount) AS TotalSales
FROM Sales
GROUP BY Region;

결과:

Region TotalSales
East 250
West 450
North 300

위 결과를 보면 "East", "West" 지역의 판매가 하나의 그룹으로 나타나고 있음

GROUP BY는 그룹화된 열에서 중복된 값을 제거함
각 그룹에 대해 집계 함수를 적용 가능

  • SUM
  • COUNT
  • AVG
  • MAX
  • MIN

각 지역별 총 판매액이 300 이상인 지역만 조회하려면

SELECT Region, SUM(SalesAmount) AS TotalSales
FROM Sales
GROUP BY Region
HAVING SUM(SalesAmount) >= 300;

결과:

Region TotalSales
West 450
North 300

WHERE

  • WHERE 절: 그룹화되기 전에 데이터 행을 필터링 함
    WHERE 절에서는 집계 함수를 사용할 수 없음
  • GROUP BY 절과 함께 사용한 예제 ↓

"SalesAmount"가 100 이상인 데이터를 필터링하고, 지역별로 그룹화한 후,
각 그룹의 총 판매액이 300 이상인 지역

SELECT Region, SUM(SalesAmount) AS TotalSales
FROM Sales
WHERE SalesAmount >= 100
GROUP BY Region
HAVING SUM(SalesAmount) >= 300;

결과:

Region TotalSales
East 250
West 450
North 300