DB

[DB] 예시와 함께 보는 SQL 그룹(집계)함수 총 정리!

Well See Coding 2024. 6. 10. 09:00
반응형
간단 TIP

그룹함수 VS 집계함수

집계 함수(Aggregate Functions) :
집계 함수는 데이터베이스 테이블의 여러 행을 하나의 요약된 값으로 변환하는 함수입니다. 대표적인 집계 함수에는 SUM(), AVG(), MAX(), MIN(), COUNT() 등이 있습니다. 예를 들어, 특정 테이블에서 급여의 합계를 구하거나, 평균 점수를 계산하는 작업에 사용됩니다

그룹 함수(Group Functions):
그룹 함수는 집계 함수와 거의 동일한 의미로 사용될 수 있지만, 보통 GROUP BY 절과 함께 사용되는 집계 함수를 의미합니다. GROUP BY 절을 사용하면 데이터를 그룹별로 집계할 수 있습니다. 예를 들어, 부서별 급여 합계나 학년별 평균 점수를 계산할 때 사용됩니다.

집계 함수는 단독으로 또는 GROUP BY 와 함께 사용할 수 있는 함수이고,
그룹 함수는 주로 GROUP BY 절과 함께 사용되는 집계 함수를 가리킵니다.
두 용어는 자주 혼용되지만, 문맥에 따라 미묘한 차이가 있을 수 있습니다.

 

SQL 그룹함수 - ctrl + F를 활용하여 원하는 함수를 찾아보세요!


종류
  • COUNT
  • SUM
  • AVG
  • MIN
  • MAX
  • VARIANCE
  • STDDEV

 

※ 해당 예제들은 EMP라는 테이블이 있고 급여를 뜻하는 SALARY의 약자인 SAL이라는 컬럼이 있다고 가정하고 작성하였습니다!

 

1. COUNT(대상)

COUNT 함수는 행의 수를 반환해주는 함수입니다.

# 사용예시
SELECT COUNT(*) FROM EMP;

2. SUM(대상) 

SUM 함수는 총합을 반환해 주는 함수입니다. 

# 사용예시
SELECT SUM(SAL) FROM EMP;

3. AVG(대상)

AVG 함수는 평균을 반환해 주는 함수입니다. 

# 사용예시
SELECT AVG(SAL) FROM EMP;

4. MIN(대상) & MAX(대상)

MIN 함수는 대상 컬럼 중 최솟값을 반환해 주고 MAX 함수는 대상 컬럼 중 최댓값을 반환해 주는 함수입니다. 

# 사용예시
SELECT MIN(SAL) FROM EMP;  -- 급여가 가장 적은 사원을 조회
SELECT MAX(SAL) FROM EMP;  -- 급여가 가장 높은 사원을 조회

5. VARIANCE(대상) 

VARIANCE 함수는 분산을 반환하는 함수입니다.

# 사용예시
SELECT VARIANCE(SAL) FROM EMP;

6. STDDEV(대상)

STDDEV 함수는 표준편차를 반환하는 함수입니다.

# 사용예시
SELECT STDDEV(SAL) FROM EMP;

위에서 설명한 총 7가지의 그룹함수는 기본적으로 NULL은 무시하고 연산을 한다는 특징을 가지고 있습니다.

 

그룹함수는 GROUP BY절과 HAVING절을 함께 알아둬야 합니다. 

 

1. GROUP BY절

  • 각 행을 특정 조건에 따라 그룹으로 분리하여 계산하도록 하는 구문식
  • GROUP BY절에 그룹을 저장할 컬럼을 전달(여러 개 전달 가능)
  • 만약 그룹 연산에서 제외할 대상이 있다면 미리 WHERE절에서 해당행을 제외함
  • 그룹에 대한 조건은 WHERE 절에서 사용할 수 없음 (WHERE 절이 GROUP BY절보다 먼저 수행되므로)
  • SELECT절에 집계 함수를 사용하여 그룹연산 결과를 표현
  • GROUP BY절을 사용하면 데이터가 요약되므로 요약되기 전 데이터와 함께 출력할 수 없음

 

2. HAVING 절

  • 그룹 함수 결과를 조건으로 사용할 때 사용하는 절임
  • WHERE 절을 사용하여 그룹을 제한할 수 없으므로 HAVING 절에 전달
  • HAVING 절이 GROUP BY 절 앞에 올 수는 있지만 뒤에 쓰는 것을 권장
  • 내부적 연산 순서가 SELECT 절보다 먼저이므로 SELECT절에서 선언된 Alias 사용 불가

SELECT문 쿼리의 기본 구조는 다음과 같습니다.

SELECT * 컬럼명
FROM 테이블명 | 뷰명
WHERE 조회 조건
GROUP BY 그룹핑컬럼명
HAVING 그룹핑 필터링 조건
ORDER BY 정렬컬럼명
  • SELECT 문은 다음과 같이 6개의 절로 구성
  • 각 절의 순서대로 작성해야 함
  • 실제 실행순서는 FROM > WHERE > GROUP BY > HAVING > SELECT > ORDER BY 
반응형