예제 : 매장별 판매 합계 구하기
Sales 테이블 :
Store | SalesAmount |
A | 500 |
B | 300 |
B | 200 |
A | 150 |
C | 450 |
우리가 Store를 기준으로 그룹을 묶고, 각 그룹의 SalesAmount 값을 합산하고 싶다고 가정하자.
SELECT Store, SUM(SalesAmount) AS TotalSales
FROM Sales
GROUP BY Store
ORDER BY TotalSales DESC;
이 쿼리는 Sales 라는 테이블에서 각 가게의 총 판매 금액 합계를 구하는 쿼리이다.
[ GROUP BY ]
그 전에 GROUP BY 에 대해서 알아볼 필요가 있다.
GROUP BY 는 특정 컬럼을 기준으로 데이터를 그룹화 할때 사용한다.
GROUP BY Store는 Store 컬럼 값이 같은 데이터를 하나로 묶어서 그룹화 하는 것이다.
(ex. 'Z', 'Y', 'Z' 가 있었다면, 중복되는 Z와 Z는 하나의 그룹으로 묶이고 Y는 따로 그룹이 된다.)
쿼리 실행 순서와 과정 설명
- GROUP BY Store 로 그룹을 나누면 :
- 그룹 1: Store = 'A' (SalesAmount : 500, 150)
- 그룹 2: Store = 'B' (SalesAmount : 300, 200)
- 그룹 3: Store = 'C' (SalesAmount : 450)
- SUM(SalesAmount)로 각 그룹의 합을 구하면
- A : 500 + 150 = 650
- B : 300 + 200 500
- C : 450
- 결과는 이렇게 나온다 :
- Store = A, TotalSales = 650
- Store = B, TotalSales = 500
- Store = C, TotalSales = 450
- ODER BY TotalSales DESC 로 내림차순 정렬하면:
- Store = A, TotalSales = 650
- Store = B, TotalSales = 500
- Store = C, TotalSales = 450
최종 출력 결과 :
Store | TotalSales |
A | 650 |
B | 500 |
C | 450 |
GROUP BY는 데이터를 그룹화하는 역할만 한다. 그래서 그룹화된 데이터에서 집계된 값을 얻고 싶을 때는 집계 함수(예: SUM, AVG, COUNT)를 사용해야 한다. 예를 들어, Store별로 각 판매 금액의 합계를 구하고 싶다면, SUM(SalesAmount)를 사용해서 각 그룹에 대해 판매 금액의 총합을 계산할 수 있다.
왜 SUM(Quantity)를 사용해야 할까?
GROUP BY만 사용하면 각 그룹이 나열되는 것만 확인할 수 있다. 그러나 각 그룹 내에서 합계나 평균 등을 계산하려면 SUM과 같은 집계 함수가 필요하다. 즉, GROUP BY는 그룹을 나누는 역할만 하고, 그룹 내에서 합산된 값이나 계산된 값을 구하기 위해선 집계 함수가 꼭 필요하다
'개발 개념 정리 > SQL' 카테고리의 다른 글
[SQL] DISTINCT - 중복된 값 제거 (0) | 2025.03.20 |
---|---|
[SQL] GROUP BY와 집계 함수의 이해하기 (0) | 2025.03.19 |
[SQL] COUNT(*) vs COUNT(컬럼) 차이 (0) | 2025.03.17 |