Skip to main content

GROUP BY

GROUP BY 절을 사용한 데이터 그룹화

  • GROUP BY 절의 역할: 특정 열(들)의 값이 동일한 행들을 하나의 그룹으로 묶어, 각 그룹에 대한 요약 정보(집계 값)를 계산할 때 사용.
  • 동작 원리:
    • FROM 절에서 테이블 지정.
    • WHERE 절에서 개별 행 필터링 (있는 경우).
    • GROUP BY 절에 명시된 열(들)을 기준으로 행들을 그룹화.
    • SELECT 절에서 각 그룹별 집계 함수 결과 또는 GROUP BY에 사용된 열을 조회.
SELECT column_to_group_by1, column_to_group_by2, ..., aggregate_function(column)
FROM table_name
WHERE condition -- (선택 사항, 그룹화 전 필터링)
GROUP BY column_to_group_by1, column_to_group_by2, ...
ORDER BY ...; -- (선택 사항, 그룹화 후 결과 정렬)
  • 주의: SELECT 절에는 GROUP BY 절에 명시된 열이나 집계 함수만 올 수 있음 (표준 SQL 기준, 일부 DBMS는 유연성 제공).

GROUP BY 절을 사용한 데이터 그룹화

  • 예시: TB_COMPANY_MASTER 테이블에서 COMPANY_TYPE_CAT (기업구분범주값) 별로 회사 수 세기
SELECT COMPANY_TYPE_CAT, COUNT(*) AS "기업 수"
FROM TB_COMPANY_MASTER
GROUP BY COMPANY_TYPE_CAT;
  • 예시: TB_LOAN_ACCOUNT 테이블에서 BIZ_REG_NO (사업자등록번호) 별로 총 LOAN_AMT (여신금액) 합계 구하기
SELECT BIZ_REG_NO, SUM(LOAN_AMT) AS "총 여신금액"
FROM TB_LOAN_ACCOUNT
GROUP BY BIZ_REG_NO;

COUNT 집계 함수

  • 집계 함수 (Aggregate Functions): 여러 행의 값을 바탕으로 단일 결과 값을 반환 (주로 GROUP BY 절과 함께 사용되나, 단독 사용 시 전체 테이블 대상).

  • COUNT(*): 그룹 내 전체 행의 수 (NULL 값 포함).

  • 기업구분별 전체 회사 수

SELECT COMPANY_TYPE_CAT, COUNT(*) AS "전체 회사 수" FROM TB_COMPANY_MASTER
GROUP BY COMPANY_TYPE_CAT;
  • COUNT(컬럼명): 그룹 내 해당 컬럼의 값이 NULL이 아닌 행의 수.
  • 신용등급이 있는(NULL이 아닌) 신용정보 건수(사업자번호별)
SELECT BIZ_REG_NO, COUNT(CREDIT_GRADE) AS "신용등급 보유 건수"
FROM TB_CREDIT_INFO GROUP BY BIZ_REG_NO;
  • COUNT(DISTINCT 컬럼명): 그룹 내 해당 컬럼의 중복을 제외한 유일한 값의 개수.
  • 여신을 받은 회사 수(중복 제외)
SELECT COUNT(DISTINCT BIZ_REG_NO) AS "여신 보유 회사 수" FROM TB_LOAN_ACCOUNT;

합계와 평균

  • SUM(컬럼명): 그룹 내 해당 컬럼 값의 합계 (숫자형 데이터에 사용).
  • 예시: TB_FINANCIAL_STATEMENT에서 회사별 총 REVENUE (매출액)
SELECT BIZ_REG_NO, FS_TYPE, SUM(REVENUE) AS "총 매출액"
FROM TB_FINANCIAL_STATEMENT
WHERE FS_TYPE = 'ANNUAL'
GROUP BY BIZ_REG_NO, FS_TYPE;
  • AVG(컬럼명): 그룹 내 해당 컬럼 값의 평균 (숫자형 데이터에 사용, NULL 값 제외).
  • 예시: TB_LOAN_ACCOUNT에서 여신종류별 평균 INTEREST_RATE (금리)
SELECT LOAN_TYPE_CD, AVG(INTEREST_RATE) AS "평균 금리"
FROM TB_LOAN_ACCOUNT
GROUP BY LOAN_TYPE_CD;

최대, 최소

  • MAX(컬럼명): 그룹 내 해당 컬럼 값의 최대값.
  • MIN(컬럼명): 그룹 내 해당 컬럼 값의 최소값.
  • 예시: TB_FINANCIAL_STATEMENT에서 회사별 연간 NET_INCOME (당기순이익)의 최대/최소값
SELECT BIZ_REG_NO,
MAX(NET_INCOME) AS "최대 순이익",
MIN(NET_INCOME) AS "최소 순이익"
FROM TB_FINANCIAL_STATEMENT
WHERE FS_TYPE = 'ANNUAL'
GROUP BY BIZ_REG_NO;

퀴즈

사용자 정보 입력
퀴즈를 시작하기 전에 이름과 소속을 입력해주세요.

Q&A