스프레드시트 Query 사용법 (7) Group By 그룹으로 묶기

Query 문법 일곱 번째 where 절 이후 옵션 중 데이터를 그룹화하는 Group By 에 대해서 알려드리겠습니다.

 SELECT 컬럼명 [WHERE 조건식] [Group By 컬럼(열)]

위키백과의 Group By절 설명문입니다.

GROUP BY 절은 그룹화 열 또는 컬럼명을 포함하는 식을 지정한다. 컬럼 별명은 사용할 수 없다. 또한 SELECT 문에서 GROUP BY 절에서 그룹 함수를 제외하고 그룹화되지 않은 열이 존재하면 함께 작성해야 한다.

간단하게 설명드리자면, 특정 열의 데이터를 기준으로 그룹으로 묶을 때 사용합니다.

1. 그룹 묶기 Grder By (열)

예시 데이터는 2019년 미쉐린 가이드 서울에서 별점 1점~3점을 받은 레스토랑 26곳의 테이블입니다.

지역(C열)으로 그룹을 묶은 뒤, 각 지역에 속하는 레스토랑(A열)의 개수를 세고 싶은 경우,
QUERY: select C, count(A) group by C

query_Groupby_01

샘플 스프레드시트: [QUERY] Group by > group by 예시1

별점(B열)으로 그룹을 묶은 뒤, 각 지역에 속하는 레스토랑(A열)의 개수를 세고 싶은 경우,
QUERY: select B, count(A) group by B

query_Groupby_02

샘플 스프레드시트: [QUERY] Group by > group by 예시2

2. Group by 중요 포인트

  • 그룹으로 묶을 열은 데이터의 종류가 적은 열을 선택합니다.

예시로 사용한 2019년 미쉐린 가이드 서울 데이터를 보시면 레스토랑(A열) 데이터는 모두 다르기때문에 그룹으로 묶을 수 없습니다. 3종류만 있는 별점(B열)이나, 9종류만 있는 지역(C열)이 그룹으로 묶기에 적절한 데이터입니다.

  • 그룹으로 묶은 데이터는 그대로 Select 가능, 그외 데이터는 함수 계산만 가능합니다.

예시의 select 문을 보시면 group by 로 그룹으로 지정한 열 B나 C는 그대로 select 했습니다. 하지만 그룹으로 지정하지 않은 열 A는 개수를 세는 count( )라는 함수를 사용하였습니다.

select B, count(A) group by B
select C, count(A) group by C

query_gourpby_03.png

지역(C열)으로 그룹을 묶었을 때, 지역 데이터가 ‘강남구’인 레스토랑은 11개나 되기 때문에 A열은 그대로 표시할 수 없습니다. 여러 개의 데이터를 함수를 통해 계산된 데이터만 표시할 수 있습니다.

하지만 함수라고 해서 어렵게 생각하지 않으셔도 괜찮습니다. 스프레드시트에서 사용되는 가장 기본적인 5가지 함수들입니다.

  • 평균: avg( )
  • 갯수: count( )
  • 최대치: max( )
  • 최소치: min( )
  • 합계: sum( )

자세한 내용은 Query Language Reference > Aggregation Functions 에서 확인할 수 있습니다.query_gourpby_04.png

다양한 함수를 사용한 다른 QUERY 예시를 보여드리겠습니다.

예시 데이터는 2019년 개봉한 애니메이션 3작품의 일일박스오피스 데이터입니다.

  • 주먹왕 랄프 2: 인터넷 속으로
  • 드래곤 길들이기 3
  • 토이 스토리 4

박스오피스 데이터 중 일부를 준비했습니다.

  • A열 날짜
  • B열 순위
  • C열 영화명
  • D열 개봉일
  • E열 매출액
  • F열 관객수

query_gourpby_10
샘플 스프레드시트: [QUERY] Group by > data 애니메이션 영화

QUERY: select C, min(D), count(A), sum(F), sum(E) group by C

  • group by C : C열 영화명으로 그룹 묶기
  • min(D) : D열 개봉일 데이터 최소치로 각 영화의 개봉일을 계산
  • count(A) : A열 날짜의 갯수로 영화의 상영일수를 계산
  • sum(F) : F열 관객수 데이터의 합계로 누적 관객수를 계산
  • sum(E) : E열 매출액 데이터의 합계로 누적 매출액을 계산

query_groupby_10샘플 스프레드시트: [QUERY] Group by > group by 예시3

참고로, Group by로 만든 결과는 피봇 테이블로도 동일한 결과를 만들 수 있습니다.query_groupby_20샘플 스프레드시트: [QUERY] Group by > 피봇 테이블 예시


Query 문법을 더 자세히 알고싶으시다면!
» 스프레드시트 Query 사용법 목차

7 Replies to “스프레드시트 Query 사용법 (7) Group By 그룹으로 묶기”

  1. 구글 스프레드 시트를 업무에 활용하고자 공부중에 님의 블로그를 알게 되었네요. 정말 정리를 잘 해놓으셔서 많은 도움이 됩니다.
    종종 방문하여 공부하겠습니다.
    감사합니다.

    좋아요

  2. 좋은 정보 감사합니다 ~ 그리고 궁금한것이 있는데
    만약에 재고관리를 쿼리문을 이용해 보고 싶은데
    A열은 모델명 B열은 사이즈 C열은 수량입니다.여기서 모델명과 사이즈의 기준으로 수량의 총합을 나타내려고 하면 수식은 어떻게 해야되나요??
    데이터는 섞여있는 상태이고 같은모델명과 사이즈별로 수량의 합을 구하는거입니다

    좋아요

    1. 모델명과 사이즈를 둘 다 그룹으로 지정하시고, (그룹으로 여러 개의 열 지정 가능)
      수량에서는 합계를 구하는 sum()을 사용하시면 됩니다.

      예시)
      select A, B, sum(C) Group by A, B

      좋아요

  3. 정말 감사합니다 ~ 알려주신데로 하니까 정말되네요 ^^ 근데 한번 더 여쭙자면 여기서 특정 조건을 걸고 싶으면 어떻게 하면 되나요??

    좋아요

    1. 조건을 걸고싶은 데이터의 종류에 따라서 where 조건을 “Group by” 앞에 넣으시면 됩니다.

      예시) select A, B, sum(C) Where (조건문) Group by A, B

      where문법에 대해서는 제 블로그의 아래 포스팅을 참고하시기 바랍니다.

      스프레드시트 Query 문법 (2) where 숫자 조건
      https://smartagent.blog/2019/07/07/query_where_number/
      스프레드시트 Query 문법 (3) where 문자열 조건
      https://smartagent.blog/2019/07/13/query_where_text/
      스프레드시트 Query 문법 (4) where 날짜와 시간
      https://smartagent.blog/2019/07/27/query_where_datetime/

      좋아요

답글 남기기

아래 항목을 채우거나 오른쪽 아이콘 중 하나를 클릭하여 로그 인 하세요:

WordPress.com 로고

WordPress.com의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

Facebook 사진

Facebook의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

%s에 연결하는 중