GROUP BY
GROUP BY
절은 지정한 열에서 같은 값을 가진 행들을 하나의 그룹으로 묶어 줍니다. 주로 COUNT()
, SUM()
, AVG()
같은 집계 함수와 함께 사용되어 범주별로 데이터를 요약할 때 쓰입니다.
왜 GROUP BY를 사용할까요?
다음과 같은 질문에 답할 수 있습니다.
- 지역별로 주문이 몇 건이었을까?
- 고객별 총매출은 얼마일까?
- 지역별 평균 주문 금액은 얼마일까?
기본 문법
GROUP BY
절은 SELECT
문에서 FROM
절 뒤에 위치합니다.
GROUP BY 구문
SELECT column_name, AGG_FUNCTION(column_name)
FROM table_name
GROUP BY column_name;
열을 기준으로 그룹을 만든 뒤, 각 그룹에 집계 함수를 적용해 요약합니다.
좋습니다. 지금까지 만든 groupby_numeric.sqlite
와 실습 SQL 코드를 바탕으로, 이어지는 교육 자료를 초보자도 따라 할 수 있도록 작성해 드리겠습니다.
아래 내용은 지금 작성하신 문서에 그대로 이어 붙이면 됩니다.
단계별 실습
clients
테이블을 사용할 것입니다. 이 테이블에는 다음과 같은 데이터가 들어 있습니다.
client_id | name | region | sales | orders_count | |
---|---|---|---|---|---|
1 | Client 1 | client1@example.com | Texas | 8041 | 19 |
2 | Client 2 | client2@example.com | New York | 8619 | 3 |
... | ... | ... | ... | ... | ... |
지역별 고객 수 세기
GROUP BY
와 COUNT(*)
를 함께 사용하면 각 지역에 몇 명의 고객이 있는지 셀 수 있습니다.
-- 지역별 고객 수를 세기
SELECT region, COUNT(*) AS client_count
FROM clients
GROUP BY region;
지역별 총매출
GROUP BY
와 SUM(sales)
를 함께 사용하면 각 지역의 총매출을 구할 수 있습니다.
-- 각 지역의 총매출 보여주기
SELECT region, SUM(sales) AS total_sales
FROM clients
GROUP BY region;
지역별 평균 매출
GROUP BY
와 AVG(sales)
를 함께 사용하면 각 지역의 평균 매출을 구할 수 있습니다.
-- 각 지역의 평균 매출 보여주기
SELECT region, AVG(sales) AS avg_sales
FROM clients
GROUP BY region;
핵심 정리
GROUP BY
는 지정한 열(들)에서 값이 같은 행들을 그룹으로 묶습니다.COUNT()
,SUM()
,AVG()
같은 집계 함수로 각 그룹을 요약합니다.- 절의 순서가 중요합니다.
SELECT
FROM
GROUP BY
ORDER BY
(그룹 정렬을 위한 선택 사항)
다음 내용이 궁금하다면?
코드프렌즈 PLUS 멤버십 가입 or 강의를 등록해 주세요!