데이터베이스에서 데이터를 그룹화하여 분석하는 것은 매우 중요합니다. 이를 위해 SQL은 다양한 그룹 함수와 윈도우 함수를 제공합니다. 이번 포스팅에서는 그룹 함수와 집계 함수의 개념, 그리고 이를 사용하는 방법에 대해 알아보겠습니다.
그룹함수
| 종류 | 설명 |
| ROLLUP | - 그룹별 중간 집계값을 생성한다. |
| CUBE | - 결합 가능한 값에 대한 다차원 집계를 생성한다. |
| GROUPING SETS | - 개별 집계를 구한다. |
집계함수
| 종류 | 설명 |
| COUNT | - 행의 개수를 반환 |
| SUM | - 특정 컬럼의 합계를 반환 |
| AVG | - 특정 컬럼의 평균을 반환 |
| MAX | - 특정 컬럼에서 최댓값을 반환 |
| MIN | - 특정 컬럼에서 최솟값을 반환 |
그룹함수 사용 예시
-- sales 테이블 생성
CREATE TABLE sales (
id INT,
product VARCHAR(50),
category VARCHAR(50),
amount INT
);
-- 예제 데이터 삽입
INSERT INTO sales (id, product, category, amount) VALUES
(1, 'Product1', 'Category1', 100),
(2, 'Product2', 'Category1', 150),
(3, 'Product3', 'Category2', 200),
(4, 'Product4', 'Category2', 250),
(5, 'Product5', 'Category3', 300);
SELECT category, SUM(amount) as total_amount
FROM sales
GROUP BY category;
| category | total_amount |
| Category1 | 250 |
| Category2 | 450 |
| Category3 | 300 |
SELECT category, product, SUM(amount) as total_amount
FROM sales
GROUP BY ROLLUP (category, product);
| category | product | total_amount |
| Category1 | Product1 | 100 |
| Category1 | Product2 | 150 |
| Category1 | NULL | 250 |
| Category2 | Product3 | 200 |
| Category2 | Product4 | 250 |
| Category2 | NULL | 450 |
| Category3 | Product5 | 300 |
| Category3 | NULL | 300 |
| NULL | NULL | 1000 |
SELECT category, product, SUM(amount) as total_amount
FROM sales
GROUP BY CUBE (category, product);
| category | product | total_amount |
| Category1 | Product1 | 100 |
| Category1 | Product2 | 150 |
| Category1 | NULL | 250 |
| Category2 | Product3 | 200 |
| Category2 | Product4 | 250 |
| Category2 | NULL | 450 |
| Category3 | Product5 | 300 |
| Category3 | NULL | 300 |
| NULL | Product1 | 100 |
| NULL | Product2 | 150 |
| NULL | Product3 | 200 |
| NULL | Product4 | 250 |
| NULL | Product5 | 300 |
| NULL | NULL | 1000 |
SELECT category, product, SUM(amount) as total_amount
FROM sales
GROUP BY GROUPING SETS (
(category),
(product),
(category, product),
()
);
| category | product | total_amount |
| Category1 | NULL | 250 |
| Category2 | NULL | 450 |
| Category3 | NULL | 300 |
| NULL | Product1 | 100 |
| NULL | Product2 | 150 |
| NULL | Product3 | 200 |
| NULL | Product4 | 250 |
| NULL | Product5 | 300 |
| Category1 | Product1 | 100 |
| Category1 | Product2 | 150 |
| Category2 | Product3 | 200 |
| Category2 | Product4 | 250 |
| Category3 | Product5 | 300 |
| NULL | NULL | 1000 |
이번 포스팅에서는 그룹 함수와 집계 함수의 개념 및 사용 방법을 알아보았습니다. 다음 포스팅에서는 윈도우 함수에 대해 알아보겠습니다. SQL을 통해 데이터를 더욱 효과적으로 분석하고자 한다면, 그룹 함수와 집계 함수를 잘 이해하고 활용하는 것이 중요합니다. 2024년에 정보처리기사를 따기 위해 노력하는 모두에게 행운을 빕니다!

| [정보처리기사 실기 공부] 병행 제어와 회복 (0) | 2024.05.20 |
|---|---|
| [정보처리기사 실기 공부] 절차형 SQL (0) | 2024.05.20 |
| [정보처리기사 실기 공부] SELECT 쿼리 활용 (2) (0) | 2024.05.13 |
| [정보처리기사 실기 공부] SELECT 쿼리 활용 (1) (0) | 2024.05.12 |
| [정보처리기사 실기 공부] SQL 기본 문법과 종류 (2) (0) | 2024.05.01 |