안녕하세요! SQL에서 데이터를 분석하고 활용하는 중요한 방법 중 하나는 다양한 GROUP 함수를 사용하는 것입니다.
이번 글에서는 ROLLUP, CUBE, GROUPING SETS와 같은 고급 그룹 함수들을 중심으로 설명하고, 테이블을 연결하는 기본적인 원칙에 대해서도 다뤄 보았습니다.
그리고 간략하게 JOIN에 대해서도 정리했는데 더 자세한 내용은 다음 글에서 구체적으로 소개하겠습니다.
이 내용을 잘 이해하고 활용하여 복잡한 데이터 분석과 집계 작업을 손쉽게 수행하시는데 도움이 되었으면 합니다.
1. GROUP 함수 개요
GROUP 함수는 데이터를 집계하는데 매우 유용한 도구다. 특히 ROLLUP, CUBE, GROUPING SETS와 같은 함수는 여러 기준으로 데이터를 그룹화하고 그 결과를 보다 직관적으로 파악하는데 도움을 준다. 다음은 각 함수의 기능과 사용 예시다.
1-1. ROLLUP
- **ROLLUP**은 부분합계와 전체 합계를 포함한 다양한 집계 결과를 생성하는 데 사용된다.
- 인수의 순서에 영향을 받으며, 앞에 있는 인수부터 집계가 이루어진다.
- 예시:
GROUP BY ROLLUP(성별, 연령);
- GROUP BY 성별, 연령: 성별과 연령별로 합계를 계산한다.
- GROUP BY ROLLUP(성별, 연령): 성별 x 연령별 합계, 성별별 합계, 전체 합계를 포함한다.
1-2. CUBE
- **CUBE**는 모든 가능한 조합에 대해 집계를 수행하며, 인수의 순서에 영향을 받지 않는다.
- 다양한 집계 결과를 생성하여 데이터를 보다 다각도로 분석할 수 있게 한다.
- 예시:
GROUP BY CUBE(성별, 연령);
- GROUP BY CUBE(성별, 연령): 성별 x 연령별 합계, 성별별 합계, 연령별 합계, 전체 합계를 포함한다.
- 이는 **GROUP BY GROUPING SETS (성별, 연령, (성별, 연령), ())**과 동일한 결과를 제공한다.
- ()는 전체 집계를 의미하며, NULL로 표시된다.
1-3. GROUPING SETS
- **GROUPING SETS**는 괄호로 묶인 집합에 대해 별도의 집계를 정의하는 기능을 제공한다.
- 다른 GROUP 함수들과 달리 부분 집계만 수행하고 전체 합계를 생성하지 않는다.
- 예시:
GROUP BY GROUPING SETS(성별, 연령);
- 성별별 합계와 연령별 합계를 별도로 계산하며, 전체 합계는 출력되지 않는다.
1-4. GROUPING 함수
- GROUPING 함수는 그룹화된 결과에서 소계나 합계와 같은 집계 여부를 나타낸다.
- 집계된 값에는 1을, 그렇지 않은 경우에는 0을 반환한다.
2. 테이블 연결과 JOIN 기법
데이터베이스에서 두 테이블을 연결해야 할 때는 다음과 같은 사항을 고려해야 한다.
2-1. JOIN을 위한 조건
- 동일한 컬럼 찾기: 두 테이블을 연결하기 위해서는 동일한 컬럼이 필요하다. 이러한 컬럼을 기준으로 데이터를 결합해야 원하는 정보를 정확히 도출할 수 있다.
- 레코드를 식별할 수 있는 컬럼: 테이블을 연결할 때는 데이터를 고유하게 식별할 수 있는 **컬럼(PK 또는 FK)**을 사용해야 한다.
- PK(Primary Key): 테이블에서 각 레코드를 고유하게 식별하는 컬럼이다.
- FK(Foreign Key): 다른 테이블의 PK를 참조하여 두 테이블 간의 관계를 나타내는 컬럼이다.
2-2. JOIN의 유형
테이블을 결합하는 방법에는 여러 가지가 있으며, 이 중 대표적인 JOIN 유형은 다음과 같다.
- INNER JOIN: 두 테이블의 공통된 데이터만을 반환한다.
SELECT *
FROM 테이블A
INNER JOIN 테이블B ON 테이블A.컬럼명 = 테이블B.컬럼명;
- LEFT JOIN: 왼쪽 테이블의 모든 데이터와 일치하는 오른쪽 테이블의 데이터를 반환하며, 일치하지 않는 데이터는 NULL로 표시된다.
SELECT *
FROM 테이블A
LEFT JOIN 테이블B ON 테이블A.컬럼명 = 테이블B.컬럼명;
- RIGHT JOIN: 오른쪽 테이블의 모든 데이터와 일치하는 왼쪽 테이블의 데이터를 반환하며, 일치하지 않는 데이터는 NULL로 표시된다.
- FULL OUTER JOIN: 양쪽 테이블의 모든 데이터를 반환하며, 일치하지 않는 데이터는 NULL로 표시된다.
SELECT *
FROM 테이블A
FULL OUTER JOIN 테이블B ON 테이블A.컬럼명 = 테이블B.컬럼명;
3. GROUP 함수의 활용 사례
- 매출 분석: 특정 제품의 매출 데이터를 ROLLUP을 통해 월별, 분기별, 연도별로 집계하여 전체 매출의 추이를 파악할 수 있다.
- 인구 통계 분석: CUBE 함수를 사용해 성별, 연령별 데이터를 결합하여 다양한 조합으로 인구 통계 데이터를 분석할 수 있다.
- 직원 성과 분석: 부서별 또는 개인별 성과를 GROUPING SETS로 각각 집계하여 비교 분석할 수 있다.
혹시 이해가 어려우시다면, 이전 글을 먼저 참고해보시면 좋을 것 같습니다.
반응형
'IT & AI > AI 지식' 카테고리의 다른 글
SQL 활용 서브쿼리(SubQuery), 계층형 조회 (0) | 2024.11.30 |
---|---|
SQL 활용 JOIN과 다양한 결합 방식 (1) | 2024.11.29 |
SQL 기본 SELECT 명령어를 비롯한 다양한 함수 활용 (1) | 2024.11.27 |
SQL 기본 및 명령어 DCL, DDL, DML, TCL (0) | 2024.11.26 |
JAVA 입출력 스트림, 보조 스트림, 입출력 API (0) | 2024.11.23 |