MySQL
MySQL - GROUP BY HAVING
코딩하는 하프물범
2024. 7. 27. 18:55
GROUP BY
와 HAVING
절
개념
- 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 |