내 잡다한 노트
Grouping 이란? 본문
데이터베이스에서 **그룹화(Grouping)**는 데이터를 특정 기준(컬럼 값)에 따라 묶어서 집계(Aggregation) 작업을 수행하기 위해 사용됩니다. 그룹화는 주로 데이터를 요약하고 분석하는 데 유용합니다.
SQL에서는 GROUP BY 명령어를 사용하여 그룹화를 수행합니다.
1. 그룹화의 목적
1.1 데이터 요약
- 그룹화는 개별 데이터 항목을 집계하여 전체 데이터를 요약하는 데 사용됩니다.
- 예: 각 부서별 평균 급여 계산
- SELECT department, AVG(salary) AS avg_salary
FROM employees
GROUP BY department;
1.2 데이터 분석
- 그룹화는 데이터의 특정 패턴이나 경향을 파악하기 위해 자주 사용됩니다.
- 예: 월별 판매량 집계
- SELECT MONTH(order_date) AS month, SUM(sales) AS total_sales
FROM orders
GROUP BY MONTH(order_date);
1.3 보고서 생성
- 그룹화는 데이터베이스 내 데이터를 기반으로 요약 보고서를 생성하는 데 필수적입니다.
- 예: 지역별 총 매출 보고서
- SELECT region, SUM(revenue) AS total_revenue
FROM sales
GROUP BY region;
2. 그룹화의 동작 원리
2.1 그룹화의 기본 개념
- GROUP BY는 동일한 값으로 묶인 행들을 하나의 그룹으로 처리합니다.
- 각 그룹에 대해 **집계 함수(Aggregate Function)**를 적용하여 데이터를 요약합니다.
- 집계 함수: COUNT(), SUM(), AVG(), MAX(), MIN() 등.
2.2 그룹화의 흐름
- FROM 절로 데이터를 선택.
- WHERE 절로 데이터를 필터링.
- GROUP BY로 데이터를 그룹화.
- 그룹별로 집계 함수가 계산.
- (옵션) HAVING 절로 집계된 데이터 필터링.
- SELECT 절에 결과 출력.
3. 그룹화의 사용 예
3.1 단순 그룹화
- 부서별 직원 수를 계산:
SELECT department, COUNT(*) AS employee_count FROM employees GROUP BY department;
3.2 그룹화 + 조건
- 급여가 50000 이상인 직원들만 포함하여 부서별 평균 급여:
SELECT department, AVG(salary) AS avg_salary FROM employees WHERE salary >= 50000 GROUP BY department;
3.3 그룹화 + 필터링(HAVING)
- 부서별 평균 급여가 60000 이상인 부서만 선택:
SELECT department, AVG(salary) AS avg_salary FROM employees GROUP BY department HAVING AVG(salary) >= 60000;
4. 그룹화가 필요한 이유
4.1 대량 데이터 분석
- 그룹화를 사용하면 대량의 데이터를 분석하고 요약할 수 있습니다.
- 예: 수백만 개의 거래 데이터에서 지역별 매출 합계를 계산.
4.2 데이터 간 패턴 파악
- 특정 기준으로 데이터를 그룹화하면 데이터를 비교하거나 트렌드를 분석할 수 있습니다.
- 예: 시간(월, 분기)별 매출 변화.
4.3 간소화된 데이터 표현
- 그룹화를 통해 원시 데이터를 요약된 형태로 표현하여 가독성을 높입니다.
- 예: 개별 직원 급여 데이터 대신, 부서별 급여 평균만 표시.
5. 그룹화와 집계 함수의 관계
그룹화는 보통 **집계 함수(Aggregate Function)**와 함께 사용됩니다. 각 집계 함수의 역할은 다음과 같습니다:
집계 함수설명예시
COUNT() | 그룹별 행의 개수 계산 | COUNT(*) → 직원 수 계산 |
SUM() | 그룹별 합계 계산 | SUM(sales) → 총 매출 계산 |
AVG() | 그룹별 평균 계산 | AVG(salary) → 부서별 평균 급여 계산 |
MAX() | 그룹별 최대값 | MAX(salary) → 부서별 최대 급여 |
MIN() | 그룹별 최소값 | MIN(salary) → 부서별 최소 급여 |
6. 그룹화 사용 시 주의사항
6.1 GROUP BY 필수 포함 컬럼
- SELECT 절에 나오는 컬럼은 모두 GROUP BY에 포함되어야 합니다.
SELECT column1, column2, SUM(column3) FROM table_name GROUP BY column1, column2;
6.2 HAVING vs WHERE
- WHERE: 그룹화 이전에 데이터를 필터링.
- HAVING: 그룹화 이후에 데이터를 필터링.
'DB' 카테고리의 다른 글
트랜잭션 (Transaction) (0) | 2025.01.21 |
---|---|
Shard 란? (0) | 2025.01.21 |
SQL 쿼리 기본적인 것들 정리 (SELECT, INSERT, UPDATE, DELETE, CREATE, ALTER ) (0) | 2025.01.21 |
순차 쓰기와 랜덤쓰기 (0) | 2025.01.20 |
B-Tree란? (0) | 2025.01.20 |