반응형

안녕하세요. 이번 글은 SQL을 하면서 많이 사용하는 GROUP BY 절에 대해 공유해보려고 합니다. 우선 해당 글은 전문적인 글이 아닌 초보자가 SQL을 공부한 부분을 공유하는 것이기 때문에 정보를 얻기에는 부적합할 수 있습니다. 초보자의 입장에서 1차원적으로 받아들인 부분을 쉽게 설명하는 글이 될 것 같습니다.

 

이전에 공부했던 WHERE 절에 대한 내용은 아래 링크를 참고해주시면 좋을 것 같습니다.

 

(5) SQL 공부 저장용 - WHERE 절 (원하는 조건의 데이터를 조회해보자)

안녕하세요. 오랜만에 SQL에 관련된 글을 적어보겠습니다. 사실 요즘에는 SQL을 공부하지 못하고 있지만 예전에 배웠던 내용을 복습하는 차원에서 내용을 공유해보겠습니다. 지난 글에서는 주석

mkt-kim.tistory.com


GROUP BY 절을 사용하면 데이터를 그룹화(Grouping) 할 수 있습니다. GROUP BY 절에 대한 설명을 한 줄로 한다면 앞의 문장처럼 설명할 수 있겠지만 초보자의 입장에서는 잘 이해가 되지 않고 그래서 실제로 어떤 상황에서 활용을 하는지 감이 오지 않을 것이라 생각합니다. 그렇기 때문에 더 쉽게 이해할 수 있는 설명으로 이야기해 보겠습니다. 예를 들어, 아래에 6개의 바구니에 여러 과일이 들어있다고 가정해 보겠습니다.

 

바구니 넘버 과일 종류 갯수
바구니 1 바나나 3
바구니 2 딸기 6
바구니 3 참외 2
바구니 4 바나나 4
바구니 5 딸기 3
바구니 6 참외 4

 

이렇게 여러 바구니에 과일이 담겨있는데 만약 과일 종류별로 총 갯수를 알고 싶다고 가정해 보겠습니다. 그렇다면 과일 종류를 GROUP BY 한다면 과일 종류 기준으로 데이터가 그룹화되고 자동적으로 갯수도 그룹화된다고 볼 수 있습니다.

 

과일 종류 갯수
바나나 7
딸기 9
참외 6

 

 

 

본격적으로 SQL의 쿼리에서 GROUP BY 절이 어떻게 구현이 되는지 살펴보겠습니다. 우선 GROUP BY 절을 사용한 쿼리의 예시를 공유해 보겠습니다.

SELECT  컬럼1
    ,   컬럼2
    ,   컬럼3
FROM    테이블명
GROUP BY
        컬럼1, 컬럼2, 컬럼3

 

SELECT 문에 GROUP BY 절이 포함될 때는 집계함수 COUNT, SUM, AVG, MAX, MIN를 제외한 모든 컬럼에 같이 GROUPING을 해야 하고 컬럼/표현식 외에 다른 컬럼을 SELECT 절에 기술하면 오류가 발생합니다. 말이 어려운데 제가 이해한 것을 쉽게 표현하자면 첫 번째 컬럼으로 그룹핑을 했기 때문에 나머지 두 번째, 세 번째 컬럼을 그룹핑 하지 않을 수 없다는 의미입니다. 집계함수를 사용한다면 그룹핑된 여러 컬럼을 기준으로 계산된 값이기 때문에 GROUP BY 절로 그룹핑된 기준의 결과값이 도출됩니다.

 

다음으로 GROUP BY 절을 표기하는 방식에 대해 알아보면 아래 쿼리와 같이 SELECT 문에 있는 컬럼명을 그대로 GROUP BY 절에 적어주면 됩니다.

SELECT  food
    ,   fruit
FROM    food_data
WHERE   harvest date = date('2023-03-01')
GROUP BY
        food
    ,   fruit

 

GROUP BY 절을 표기하기 위한 더 쉬운 방법이 있는데 굳이 컬럼명을 적을 필요 없이 컬럼의 위치로 표기할 수도 있습니다. 위 쿼리를 예시로 들면 첫 번째 줄에 있는 food 라는 컬럼명은 1, 두 번째 줄에 있는 fruit 라는 컬럼명은 2로 컬럼의 순서에 따라 GROUP BY 절을 표기하면 됩니다.

SELECT  food
    ,   fruit
FROM    food_data
WHERE   harvest date = date('2023-03-01')
GROUP BY
        1, 2

 


지금까지 SQL을 공부하면서 배운 GROUP BY 절에 대해 초보자가 이해한 관점으로 정리해 보았습니다. 혹시 틀린 부분이 있다면 댓글로 알려주시면 내용을 정정해 보겠습니다. 그리고 저보다 더 초보자인 분들에게는 조금이라도 도움이 되었으면 좋겠습니다. 그럼 다음에도 SQL 공부하는 글로 찾아오겠습니다. 감사합니다 :)

반응형
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기