데이터 분석의 핵심 SQL 그룹화(GROUP BY) 비즈니스 인사이트를 도출하는 집계 함수 완벽 가이드

SQL 기본 쿼리와 데이터베이스의 기본 개념을 배웠다면, 이제는 비즈니스 인사이트 도출을 위한 SQL 그룹화와 데이터 집계 함수에 대해서 배워 볼 차례이다. 특히 Group by가 왜 데이터 분석에서 중요한 지 알려 드리니 이번 포스팅 꼭 끝까지 읽어 주시기 바래요.

[AI 요약 및 핵심 인사이트]

  • 주제: 비즈니스 인사이트 도출을 위한 중급 SQL 집계 및 그룹화(GROUP BY) 가이드
  • 핵심 도구: 데이터 요약을 위한 집계 함수(SUM, AVG, COUNT, MIN, MAX) 및 별칭(AS) 활용
  • 분석의 핵심: 단순 집계를 넘어 카테고리/지역별 세그먼트 분석을 가능케 하는 GROUP BY의 중요성 강조
  • 작성 규칙: 가독성과 실행을 위한 SQL 필수 절 순서(SELECT → FROM → GROUP BY → ORDER BY) 준수
  • 작동 원리: 내부적으로 진행되는 ‘분할(Split) – 적용(Apply) – 결합(Combine)’ 프로세스 설명
  • 실무 팁: 단일 그룹화로 보지 못한 인사이트를 찾는 다중 그룹화(location, category) 및 정렬 활용법 제시
  • 학습 경험: Datacamp와 AI(Gemini)를 활용한 능동적인 데이터 분석 학습 과정 공유

데이터 분석의 핵심 SQL 그룹화(Group by)

이제는 단순 데이터 가져오기를 넘어 분석의 단계로 왔다. 전 포스팅에서 데이터베이스의 기본 개념과, 데이터베이스에 있는 데이터를 가져오는 기본적인 SQL 쿼리에 대해 배웠다.

오늘은 데이터 집계 함수를 통해 전체 데이터를 요약하고, SQL 그룹화를 통해 비즈니스 직접적인 질문에 답을 할 수 있는 쿼리에 대해 공부해 보자


데이터 요약의 마법, 집계 함수와 별칭(Alias)

데이터 집계 함수는 그다지 어렵지 않다. SUM(), AVG(), MIN(), MAX() 어디에서 한번씩 본적이 있지 않은가? 이를 데이터 집계 함수라 하고, 전체 데이터의 기본적인 집계 내용을 알아볼 수 있다

  • SUM() : 합계
  • AVG() : 평균
  • MIN() : 최소값
  • MAX() : 최대값


1) SQL 쿼리 집계 함수 설명 가이드

SELECT SUM(amount) AS total_revenue

FROM orders;

orders 테이블에 있는 amount 컬럼에 있는 데이터 값의 합계를 구하고, 그 값의 컬럼 이름을 total_revenue라고 해라. 이것을 실행했더니, 아래와 같이 나왔다.

데이터 집계 함수절1

사실 AS total_revenue 하지 않아도, 합계를 구할 수 있습니다. 그런데, 컬럼 이름이 임의로 적혀줘서, 다른 사람이 봤을 때 이것이 무엇인지 확인할 수가 없습니다. 그래서 우리는 AS로 통해서 컬럼 이름을 정해준 것이다.

집계는 이것이 다다. SUM() 자리에 AVG(), MIN(), MAX()만 넣고, AS 뒤에 원하는 이름을 만들기만 하면 된다.


2) 데이터 집계 함수 작업할 때 핵심 질문 2가지

  • 어떤 컬럼을 요약하고 싶은가? 위의 예시에서는 amount 컬럼이다
  • 어떤 요약 연산을 적용하고 싶은가? 위에 예시에서는 SUM 합계였다.


3) 데이터 집계 시 카운트(count)을 어떻게 할까?

여기서 카운트는 이 컬럼에는 몇 개의 데이터 값이 있는지를 세는 것이다.

SELECT COUNT(order_id) AS order_count

FROM orders;

orders 테이블의 order_id 컬럼의 데이터 값을 세보고, 그 값을 order_count에 넣어줘 라고 얘기하는 거다. 그런데, 데이터 값이 가끔 중복된 것들도 있을 수 있다. 중복된 값을 빼고, 고유한 값을 가진 것만 세보고 싶다면 아래와 같이 하면 된다

SELECT COUNT(DISTINCT user_id) AS user_count

FROM orders;


4) 여러 집계 함수를 한번에 다 사용하기

Count(), SUM(), AVG()를 한꺼번에 아래와 같이 넣고, 결과를 받을 수도 있다.

데이터 집계 함수절2

이 데이터의 주문 수(order_count)는 905, 고유한 사용자 수(User_count)는 157, 매출(revenue)는 약 127056 그리고 평균 주문 금액(avg_amount)는 약 140이다.

보시라. 데이터 집계 함수 작업으로 이 데이터의 핵심 요약을 할 수 있다.


비즈니스 결정의 핵심 GROUP BY 활용법

위에서 데이터 집계 함수를 배웠다. 이 데이터 요약본을 본 것이다. 그런데, 이런 생각이 든다. 그래서 뭐 어쩌라고? 집계 함수는 정말 데이터의 기본 내용만 알려준다.

아래 질문에 답을 할 수 있을까?

  • 전체 주문 수에서 가장 많은 주문 수를 가지고 있는 카테고리는 무엇인가?
  • 어떤 지역에서 가장 많이 주문을 하는가?
  • 주문이 가장 많이 들어오는 시간대는 어디인가?

실제로 비즈니스에 인사이트를 주기 위해 정작 필요한 질문에는 답을 할 수가 없다. 이에 유용하게 사용되는 것이 SQL 그룹화(Group by)이다.


1) SQL 그룹화(Group by) 쿼리

아래 쿼리는 카테고리 별로, 주문 수, 고유 사용자 수, 매출 합계, 평균 주문 금액의 데이터를 알아보는 내용이다.

중요한 것은 SELECT 바로 뒤에 알아보고 자 하는 기준 컬럼명을 넣어야 한다. 여기에서는 카테고리 이기 때문에 category라는 컬럼 이름을 넣었다.

그 아래의 Count(), Count(DISTINCT), Sum(), AVG()는 카테고리 별로 내가 알고 싶은 데이터 집계 값이다. 그리고 제일 마지막에는 그룹화를 할 기준을 정하는 것으로 GROUP BY category; 로 마무리 지었다.

SQL 그룹화 (GROUP BY)

그랬더니, 카테고리 별로 집계 값을 확인할 수 있었다. Electronics, Fashion, Grocery, Home & Garden이 바로 카테고리다.

사실 SQL 그룹화를 하기 전에 그룹화를 할 컬럼에 고유한 데이터 값이 뭐가 있는지 확인해야 한다. 데이터 사이즈가 큰 경우 우리가 눈으로 다 확인하기 어렵기에 갑자기 보지 못한 카테고리가 나올 경우 당황할 수 있기 때문이다. 고유한 데이터 값 확인은 아래와 같다.

SELECT DISTINCT category
FROM orders;


2) SQL 절 순서

SQL은 특정 순서대로 작성해야 한다. 특히 그룹화와 정렬을 할 때에는 더욱 그렇다. 그렇게 하지 않으면 오류가 난다.

위의 절을 봤을 때, SELECT -> FROM -> GROUP BY가 보인다. 그냥 만든 것 같지만 SQL 창시자들이 가독성을 위해 정한 언어 규칙이다. 여기에다 정렬(ORDER BY)까지 더한다면 그것은 이렇게 순서(위에서 아래)가 된다

  • SELECT
  • FROM
  • GROUP BY
  • ORDER BY


3) 효과적인 그룹화를 위한 핵심 질문 3가지

  • 어떤 열을 기준으로 그룹화할 것인가? 그룹화 열은 행을 그룹으로 나누는 기준을 결정
  • 어떤 열을 요약할 것인가? 지표를 계산할 대상이 되는 입력 열을 선택
  • 어떤 요약 연산을 적용할 것인가? 

SQL 그룹화가 되는 과정

  • 분할(Split): 데이터를 그룹화 열의 고유 값을 기준으로 여러 그룹으로 나눕니다.
  • 적용(Apply): 각 그룹에 대해 개별적으로 요약 연산을 수행합니다.
  • 결합(Combine): 각 그룹의 결과를 모아 하나의 요약 테이블로 합칩니다.

참고로, 데이터 분석을 위해서는 많은 데이터를 이용하는 것이 신뢰성을 높일 수 있다. 신뢰할 수 있는 데이터 요약을 위해 그룹 크기는 최소 30 이상을 목표로 하는 것을 추천한다.

4) SQL 다중 그룹화 작업

다중 그룹화는 무엇일까? 위에서는 우리는 카테고리 하나만 그룹화를 했다. 다른 것도 함께 그룹화를 한다면 그것이 바로 다중 그룹화이다.

다중 그룹화를 하는 데에는 이유가 있다. 바로 단일 그룹화로 했을 때 우리가 보지 못하는 인사이트를 발견할 수 있기 때문이다.

아래 경우 그룹화 기준이 되는 것이 2개가 나온다. 바로 location과 category이다. 마찬가지로 아래의 Group by를 보면 location과 category가 나온다.

말로 표현하자면, 각 location의 category 별의 집계 함수 값을 알아보는 것이다.

SQL 다중 그룹화 절

여기에다 정렬까지 더해져서 location, revenue 별로 내림차순(높은순 -> 낮은순)이 데이터 값을 확인할 수 있다.


마무리

오늘은 비즈니스 인사이트를 발견할 수 있는 SQL 그룹화(Group by)와 데이터 집계 함수들에 대해서 알아보았다. datacamp sql 강의는 사용하면 사용할 수록 마음에 든다.

여타 다른 온라인 영상 강의와 다르게, AI가 나의 질문, 생각에 대한 답변을 주기 때문에 강의가 잠깐 끊어지더라도, 내가 생각하는 것에 대해서 서로 의견을 주고 받을 수 있다는 것이 흥미롭다.

오늘 강의를 요약해 보면 확실히 기본적인 내용은 집계 함수로, 비즈니스 질문에 대해서 세부적인 답변을 준비하려면 그룹화를 해서 데이터를 나눠서 보는 것이 나아 보였다.

만약 내가 비즈니스 질문을 만든다면, 그것은 굉장히 세부적인 질문일 것이기 때문에 그럴 때에는 그룹화된 데이터를 보는 것이 훨씬 낫지 않을까 싶다. 그것을 위한 SQL GROUP BY는 앞으로 요긴하게 쓰일 것 같다.

유사한 게시물