본문 바로가기

[DB]DataBase/[SQL]

[SQL] 집계함수(Aggregate function)

728x90
반응형

집계함수(Aggregation Function)

1. 집계함수란?

테이블의 전체 레코드를 대상으로 특정 컬럼을 적용해서 한 개의 값을 리턴하는 함수이다.

2. 집계함수 종류

집계함수에는 대표적으로 COUNT(), SUM(), AVG(), MIN(), MAX() 등이 있다.

  1. COUNT() : 지정된 기준과 일치하는 레코드 개수를 반환한다.
    1. COUNT_BIG() : COUNT()함수는 INT형식을 반환하므로, 만약 2^31-1을 넘는 데이터를 다룬다면 BIGINT를 반환하는 함수를 사용한다.
  2. SUM() : 컬럼값의 합을 반환한다.
  3. AVG() : 컬럼값의 평균을 반환한다.
  4. VARIANCE() : 컬럼값의 분산을 반환한다.
  5. STD() : 컬럼값의 표준편차를 반환한다.
  6. MIN() : 컬럼값의 최솟값을 반환한다.
  7. MAX() : 컬럼값의 최댓값을 반환한다.
  8. FIRST() : 첫 번째 레코드 값을 반환한다.
  9. LATS() : 마지막 레코드 값을 반환한다.
  10. GROUP_CONCAT() : 각 그룹의 레코드를 쉼표로 구분하여 하나의 문자열로 반환한다.

3. 집계함수 특징

  • 집계함수는 NULL을 제외하고 연산하는 것이 원칙이다.
    • NULL이 발생할 경우를 대비하여 조건절로 처리한다.
  • GROUP BY절을 이용하여 그룹 당 하나의 결과로 그룹화할 수 있다.
  • HAVING절을 이용하여 집계함수를 이용한 조건 비교를 할 수 있다.
  • MIN, MAX 함수는 모든 자료형에 사용할 수 있다.
  • COUNT 함수는 중복된 값도 모두 집계한다.
    • 중복된 값을 제외하고 싶다면 COUNT(DISTINCT column)을 통해 중복값을 모두 제거한다.
  • 집계함수를 사용할 수 있는 GROUP BY절 보다 WHERE절이 먼저 수행되므로 집계함수는 WHERE절에 올 수 없다.
  • 집계함수는 GROUP BY, HAVING, SELECT, ORDER BY절에서 사용 가능하다.

4. 집계함수와 성능

  • 대략 2만건의 데이터가 있는 테이블에서 SELECT COUNT(*)가 SELECT *에 비해 8배 이상 빠르다.
  • 140건의 행이 존재하는 테이블의 특정 컬럼값을 계산할 때 SUM()을 사용한 경우가 값을 하나씩 읽어서 직접 더한 경우보다 17배 정도 빠르다.
  • 즉 집계함수를 사용하는 것이 데이터 한 건씩 처리하는 것보다 성능면에서 월등히 좋다.
반응형

'[DB]DataBase > [SQL]' 카테고리의 다른 글

[SQLD] 데이터베이스 스키마 구조  (0) 2024.02.21
[SQLD] 데이터 독립성  (0) 2024.02.20
[SQLD] 데이터 모델링  (0) 2024.02.19
[SQL] CONVERT_TZ()  (0) 2023.07.14
[SQL] JOIN문  (0) 2023.04.15