집계 함수(Aggregate Function)

Suhyeon Lee·2024년 10월 29일
0

집계 함수

  • 값들의 집합을 계산해서 하나의 값을 리턴하는 함수
    • 여러 행으로부터 하나의 결괏값을 반환
  • 열(column)끼리 연산 수행
  • 주로 SELECT 구문에서만 사용
    • 보통 GROUP BY절과 함께 사용
      • 특별한 경우엔 없어도 됨
    • WHERE절에 바로 집계함수 사용할 수 없음
      • GROUP BY절보다 WHERE절이 먼저 수행되기 때문에 집계 함수는 WHERE절에 올 수 없다
      • GROUP BY를 하고 HAVING절에 집계함수를 쓰거나 WHERE절 안에 서브쿼리를 넣어 집계함수를 사용할 수 있음
# 잘못된 사용 
SELECT math_score
FROM scores
WHERE english_score = MIN(english_score)

# 올바른 사용   
SELECT math_score
FROM scores
WHERE
english_score = (SELECT MIN(english_score) FROM scores)

종류

  • COUNT
    • 특정 열(Column)의 행의 개수를 세는 함수
    • COUNT(*)로 작성하면 테이블에 존재하는 행의 개수가 반환됨
    • 특정 열에 대해서 COUNT를 수행하면 해당 열이 NULL이 아닌 행의 개수를 반환
      • COUNT(*)를 제외하고 NULL값은 세지 않음
  • MIN
    • 선택한 column의 가장 큰 값을 리턴
    • 문자 또는 문자열인 경우 사전 순으로 가장 느린 데이터를 반환
    • 함수 내에 산술식 사용 가능
  • MAX
    • 선택한 column의 가장 작은 값을 리턴
    • 문자 또는 문자열인 경우 사전 순으로 가장 앞선 데이터를 반환
    • 함수 내에 산술식 사용 가능
  • AVG
    • 숫자형 column의 평균값을 리턴
    • NULL값은 제외
      • NULL값을 포함해서 평균을 구하려면 SUM으로 총합을 구하고 COUNT(*)로 나눠야 함
      • 아니면 NULL을 0으로 지정하는 작업을 한 뒤 AVG 사용
  • SUM
    • 숫자형 column의 총합을 리턴
    • NULL값은 제외

GROUP BY

  • GROUP BY 키워드를 이용하면 테이블의 일부 행을 대상으로 집계 함수를 사용할 수 있음
    • GROUP BY 없으면 테이블의 모든 행에 대해서 계산

HAVING

  • GROUP BY와 함께 쓰이는 조건문
  • WHERE에서는 집계 함수를 사용할 수 없는 반면 HAVING은 집계 함수와 함께 사용 가능하다는 장점이 있음
profile
2 B R 0 2 B

0개의 댓글