검수요청.png검수요청.png

group by

위키원
이동: 둘러보기, 검색

group bySQL에서 동일한 값을 가진 행들을 그룹화하여 집계 함수와 함께 사용되는 절이다. 데이터를 특정 기준으로 분류하고 각 그룹에 대한 통계를 계산할 때 유용하다.

개요[편집]

group by는 SQL에서 레코드를 하나 이상의 컬럼 값을 기준으로 그룹화할 때 사용하는 명령어이다. 일반적으로는 집계 함수(aggregate function)랑 함께 사용된다.

쉽게 말해서, group by는 "비슷한 애들끼리 묶어서 통계를 내줘"라고 하는 명령어이다.

기본 문법[편집]

SELECT 컬럼1, 집계함수(컬럼2)
FROM 테이블명
GROUP BY 컬럼1;

예를 들어 sales라는 테이블이 있고, 여기에는 region(지역)과 amount(판매금액)이라는 컬럼이 있다고 해보자.

SELECT region, SUM(amount)
FROM sales
GROUP BY region;

이 쿼리는 지역별로 판매금액의 총합을 구하는 것이다. region이 같으면 같은 그룹으로 묶고, 각 그룹에 대해 SUM(amount)를 계산한다.

동작원리[편집]

  1. 먼저 from 절에 있는 테이블에서 데이터를 불러온다.
  2. where 절이 있다면 조건에 맞는 행만 필터링한다.
  3. group by 절이 실행돼서, 지정한 컬럼 값이 같은 것들끼리 묶어준다.
  4. select 절에 있는 집계 함수가 각 그룹에 대해 계산된다.
  5. order by가 있으면 그 결과를 정렬한다.

주요 특징[편집]

  • 그룹화 기준: 지정한 컬럼 값이 같은 행들을 하나의 그룹으로 묶음
  • 집계 함수와 함께 사용: COUNT, SUM, AVG, MAX, MIN 등과 함께 작동
  • having 절과 연동: 그룹화된 결과에 대한 필터링 가능

사용 예제[편집]

기본 사용법
-- 부서별 직원 수 계산
SELECT department, COUNT(*) as employee_count
FROM employees
GROUP BY department;
다중 컬럼 그룹화
-- 부서별, 직급별 평균 급여
SELECT department, position, AVG(salary) as avg_salary
FROM employees
GROUP BY department, position;
HAVING 절 사용
-- 평균 급여가 500만원 이상인 부서만 조회
SELECT department, AVG(salary) as avg_salary
FROM employees
GROUP BY department
HAVING AVG(salary) >= 5000000;

자주 쓰이는 집계 함수[편집]

group by는 보통 다음 집계 함수들과 함께 사용된다

  • COUNT() : 항목 수
  • SUM() : 합계
  • AVG() : 평균
  • MAX() : 최댓값
  • MIN() : 최솟값

예:

SELECT department, COUNT(*)
FROM employees
GROUP BY department;
→ 부서별 직원 수를 계산

group by와 order by의 차이[편집]

  • group by는 데이터를 묶기 위한 것이고,
  • order by는 결과를 정렬하기 위한 것이다

둘은 함께 자주 쓰이지만, 목적이 다르다.

SELECT department, COUNT(*) as emp_count
FROM employees
GROUP BY department
ORDER BY emp_count DESC;

부서별 직원 수를 계산하고, 직원 수 기준으로 내림차순 정렬.

주의사항[편집]

  • select 절에 포함된 컬럼은 group by 절에 명시되거나 집계 함수로 감싸져야 함
  • where 절은 그룹화 전에 필터링, having 절은 그룹화 후에 필터링
  • NULL 값도 하나의 그룹으로 처리됨

성능 고려사항[편집]

  1. 그룹화할 컬럼에 인덱스가 있으면 성능 향상
  2. 그룹화 기준 컬럼 수가 많을수록 성능 저하 가능성
  3. 대량 데이터 처리 시 메모리 사용량 증가

같이 보기[편집]


  검수요청.png검수요청.png 이 Group by 문서는 데이터에 관한 글로서 검토가 필요합니다. 위키 문서는 누구든지 자유롭게 편집할 수 있습니다. [편집]을 눌러 문서 내용을 검토·수정해 주세요.