개발 개념 정리/SQL

[SQL] GROUP BY 이해하기: SQL로 데이터 그룹화와 계산하기

개발하는 몽키 2025. 3. 17. 18:45

예제 : 매장별 판매 합계 구하기

 

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는 따로 그룹이 된다.)


 

쿼리 실행 순서와 과정 설명

  1. GROUP BY Store 로 그룹을 나누면 : 
    • 그룹 1: Store = 'A' (SalesAmount : 500, 150)
    • 그룹 2: Store = 'B' (SalesAmount : 300, 200)
    • 그룹 3: Store = 'C' (SalesAmount : 450)
  2. SUM(SalesAmount)로 각 그룹의 합을 구하면
    1. A : 500 + 150 = 650
    2. B : 300 + 200 500
    3. C : 450
  3. 결과는 이렇게 나온다 :
    1. Store = A, TotalSales = 650
    2. Store = B, TotalSales = 500
    3. Store = C, TotalSales = 450
  4. ODER BY TotalSales DESC 로 내림차순 정렬하면:
    1. Store = A, TotalSales = 650
    2. Store = B, TotalSales = 500
    3. 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는 그룹을 나누는 역할만 하고, 그룹 내에서 합산된 값이나 계산된 값을 구하기 위해선 집계 함수가 꼭 필요하다