SQL 집계 함수는 데이터를 요약하고 통계 정보를 도출할 때 사용됩니다. 예를 들어, 총합, 평균, 최댓값, 최솟값 등을 계산하거나 데이터를 그룹화하여 분석할 수 있습니다. 이 글에서는 SQL 집계 함수와 그룹화(Grouping), 집계 조건 필터링(HAVING)을 다루어 보겠습니다.

 


1. 집계 함수의 종류

SQL 집계 함수는 데이터를 요약하여 하나의 결과값으로 반환합니다. 주로 데이터의 수를 세거나 합계, 평균, 최댓값, 최솟값을 계산할 때 사용됩니다.

주요 집계 함수

함수 설명

COUNT 행(Row)의 개수를 반환
SUM 값(Value)의 합계를 반환
AVG 값(Value)의 평균을 반환
MAX 값(Value) 중 최대값을 반환
MIN 값(Value) 중 최소값을 반환

예제

  • 트랙의 총 개수 조회
SELECT COUNT(*) AS TotalTracks 
FROM Track;

  • 총 가격 합계 계산
SELECT SUM(UnitPrice) AS TotalPrice
FROM Track;

  • 평균 가격 계산
SELECT AVG(UnitPrice) AS AveragePrice 
FROM Track;

  • 최대 및 최소 가격 조회
SELECT MAX(UnitPrice) AS MaxPrice, MIN(UnitPrice)
AS MinPrice FROM Track;


2. GROUP BY

GROUP BY 절은 데이터를 특정 기준으로 그룹화하여 집계 함수와 함께 사용합니다. 예를 들어, 트랙을 장르별로 그룹화하여 각 장르의 총 트랙 수를 계산할 수 있습니다.

기본 문법

SELECT 컬럼명, 집계함수
FROM 테이블명
GROUP BY 그룹화할 컬럼명;

예제

  • 장르별 트랙 수 계산
SELECT GenreId, COUNT(*) AS TrackCount
FROM Track 
GROUP BY GenreId;

  • 트랙별 평균 가격 계산
SELECT TrackId, AVG(UnitPrice) AS AveragePrice 
FROM Track
GROUP BY TrackId;


GROUP BY와 NULL 처리

  • GROUP BY에서 NULL 값은 하나의 그룹으로 처리됩니다.
  • 예를 들어, 특정 컬럼에 NULL 값이 포함된 경우 해당 그룹도 집계에 포함됩니다.

예제

  • NULL 값이 포함된 그룹 집계
SELECT Composer, COUNT(*) AS TrackCount 
FROM Track 
GROUP BY Composer;


3. HAVING

HAVING 절은 GROUP BY 결과에 조건을 추가할 때 사용됩니다. WHERE 절은 그룹화 이전의 데이터를 필터링하고, HAVING 절은 그룹화 이후의 데이터를 필터링합니다.

기본 문법

SELECT 컬럼명, 집계함수
FROM 테이블명
GROUP BY 그룹화할 컬럼명
HAVING 조건;

예제

장르별 트랙 수가 10개 이상인 데이터 조회

SELECT GenreId, COUNT(*) AS TrackCount 
FROM Track 
GROUP BY GenreId 
HAVING COUNT(*) >= 10;

트랙별 평균 가격이 $1.50 이상인 데이터 조회

SELECT ArtistId, AVG(UnitPrice) AS AveragePrice 
FROM Track 
GROUP BY ArtistId 
HAVING AVG(UnitPrice) >= 1.50;


HAVING과 WHERE의 차이

조건절 사용 위치 적용 범위

WHERE 그룹화 이전에 조건을 적용 개별 행(Row)에 대한 필터링
HAVING 그룹화 이후에 조건을 적용 그룹(Group)에 대한 필터링

예제 비교

WHERE 사용 (그룹화 이전)

가격이 $1.00 이상인 트랙만 그룹화하여 장르별 트랙 수를 계산합니다.

SELECT GenreId, COUNT(*) AS TrackCount 
FROM Track 
WHERE UnitPrice > 1.00
GROUP BY GenreId;

HAVING 사용 (그룹화 이후)

그룹화된 장르 중에서 트랙 수가 10개를 초과하는 데이터만 조회합니다.

SELECT GenreId, COUNT(*) AS TrackCount 
FROM Track 
GROUP BY GenreId 
HAVING COUNT(*) > 10;


요약

집계 함수: 데이터를 요약하여 통계를 도출합니다.

  • 주요 함수: COUNT, SUM, AVG, MAX, MIN.

GROUP BY: 데이터를 특정 컬럼 기준으로 그룹화하여 집계합니다.

  • NULL 값도 그룹화의 일부로 포함됩니다.

HAVING: 그룹화된 데이터에 조건을 추가하여 필터링합니다.

  • WHERE는 그룹화 이전, HAVING은 그룹화 이후 조건 적용.

이 문법들을 활용하면 SQL을 통해 데이터를 효과적으로 요약하고, 원하는 통계 정보를 추출할 수 있습니다. 다음 글에서는 SQL Join을 통해 여러 테이블을 결합하여 데이터를 조회하는 방법을 학습하겠습니다.

'SQL > 학습정리' 카테고리의 다른 글

SQL 서브쿼리  (0) 2024.12.12
SQL Join  (0) 2024.12.11
SQL 기본 문법 2  (0) 2024.12.09
SQL 기본 문법 1  (0) 2024.12.09
데이터베이스 및 SQL 기본 개념 정리  (1) 2024.12.09

+ Recent posts