• SQL Aggregate 함수 (AVG, COUNT, MAX, MIN, SUM)

    2021. 5. 31.

    by. Jacob Lee

    728x90

     


     

    Aggregate 함수

    SQL은 다양한 집계 함수를 제공한다.

    SQL 집계 함수의 메인 아이디어는 다수의 입력을 취하고 단일 출력을 반환하는 것이다.

     

    자주 쓰이는 집계 함수들은 다음과 같다.

    • AVG() - 평균값을 반환한다
    • COUNT() - 값의 수를 반환한다.
    • MAX() - 최댓값을 반환한다
    • MIN() - 최솟값을 반환한다.
    • SUM() - 값의 합계를 반환한다.

     

    Aggregate 함수의 기본적인 문법은 다음과 같다.

    <AVG>
    SELECT AVG(column_name)
    FROM table_name
    WHERE condition;
    
    <COUNT>
    SELECT COUNT(column_name)
    FROM table_name
    WHERE condition;
    
    <MAX>
    SELECT MAX(column_name)
    FROM table_name
    WHERE condition;
    
    <MIN>
    SELECT MIN(column_name)
    FROM table_name
    WHERE condition;
    
    <SUM>
    SELECT SUM(column_name)
    FROM table_name
    WHERE condition;

     

    Aggregate 함수 사용 시 주의할 점

    • 집계 함수는 SELECT절이나 HAVING절에서만 호출 가능하다.
    • AVG() 함수는 소수 값을 반환한다.
      (더 정확한 표시를 위해서 ROUNT() 함수를 사용할 수 있다)
    • COUNT() 함수는 단순히 데이터의 수를 반환하므로, 컨벤션을 따라 COUNT(*)와 같은 식으로 사용하면 된다.

     

    Aggregate 함수 사용하기

    AVG()

    Film이란 테이블에서 replacement_cost 컬럼의 평균값을 요청해보자.

    SELECT AVG(replacement_cost)
    FROM film;

     

    틀린 점은 없지만 AVG 함수는 소수 값을 반환하기 때문에 19.9840000... 같은 소수 값을 반환할 것이다. 앞서 말했던 것처럼 여기서 ROUND 함수를 원하는 소수점 자리와 함께 사용할 수 있다.

    SELECT ROUND(AVG(replacement_cost), 2)
    FROM film;

    위와 같이 ROUND를 사용했을 때 19.98이 반환된다.

     

    MAX() & MIN()

    마찬가지로 film이란 테이블에서 replacement_cost 컬럼의 최댓값과 최솟값을 요청해보자.

    <MAX>
    SELECT MAX(replacement_cost)
    FROM film;
    
    <MIN>
    SELECT MIN(replacement_cost)
    FROM film;

     

    위와 같이 최댓값과 최솟값을 구하는 것이 어렵지 않지만, 주의해야 할 점이 하나 있는데, 바로 집계 함수는 많은 입력을 취하고 단일 출력을 조회한다는 것이다. 즉, 한 가지의 집계 함수를 한 컬럼을 위해 호출하기 때문에 단일 객체를 반환한다는 것이다.

     

    그러므로 아래와 같은 예제를 실행했을 때 에러가 발생하게 된다.

    SELECT MAX(replacement_cost), film_id
    FROM film;

     

    하지만 MAX()와 MIN() 함수를 같이 사용하는 경우에는 둘 다 단일의 값을 반환하기 때문에 같이 사용이 가능하다.

    SELECT MAX(replacement_cost), MIN(replacement_cost)
    FROM film;

     

    728x90

    'Back-end > SQL' 카테고리의 다른 글

    SQL HAVING절  (0) 2021.05.31
    SQL GROUP BY절  (0) 2021.05.31
    SQL LIKE & ILIKE연산자  (0) 2021.05.30
    SQL IN 연산자  (0) 2021.05.30
    SQL BETWEEN 연산자  (0) 2021.05.30

    댓글