SQL | SUM함수, COUNT함수 사용법 정리

    728x90

     

    0. SUM 함수와 COUNT 함수가 헷갈리는 이유

     

    ' 00 데이터의 총 수를 세라' 라는 문제를 생각없이 풀다보면

    SUM 함수와 COUNT 함수를 혼용해서 쓸 때가 있다. 

     

    예를 들어, '주문정보 테이블의 주문 건수를 세라' 라는 문제가 있을 때

     

    ① 한 주문번호 당 주문한 건 수의 값들을 모두 합해야 하는지 

    ② 주문 건수 컬럼의 전체 행 수를 세야 하는지 헷갈린다.

    ( ①은  SUM 함수 사용 / ②은 COUNT 함수를 사용)

     

    SUM 함수COUNT 함수의 차이를 명확히 알고 넘어가자.

     


    1. SUM 함수와 COUNT 함수

    : SQL의 기본 연산 함수

    SUM함수와 COUNT함수 사용법 차이

    ▶ 합계 SUM(계산할 컬럼명)

    : 해당 컬럼 안에 들어있는 값들의 합계를 구해줌

     

    ▶ 개수 COUNT(세어줄 컬럼명)   *컬럼명 대신 1 혹은 * 사용 가능

    : 현재 테이블이 몇 개의 데이터를 가지고 있는지 개수를 세줌

    + DISTINCT 몇 개의 값을 가지고 있는지 구할 때 사용 (= 값을 중복없이 세어줌)

     


    2. 실습문제

     

    ▶ food_orders 테이블

    - 컬럼: restauratn_name / cuisine_type / price / quantity / day_of_the_week / rating / food_preparation / delivery_time 등

     

     

    2-1) 상품 준비시간의 합계 구하기

     

    ▶ SUM 함수 사용

    : 상품 준비시간 값들을 모두 합해줌.

    SELECT SUM(food_preparation_time) sum_prep,
    FROM food_orders fo

     


     

     

    2-2) 주문 건수와 주문한 고객 수 구하기

     

    ▶ COUNT 함수 사용

    : 주문이 들어온 총 건 수와 주문한 고객 수를 구함.

    SELECT count(1) count_orders,
           count(DISTINCT customer_id) count_customer
    FROM food_orders fo

     

    >> COUNT 함수를 사용해 나온 결과인 count_orders인 1,898전체 행 수를 세준 것.

    >> count_customer의 결과가 1,200인 이유는 customer_id(고객_id)를 DISTINCT로 중복 제거를 해줬기 때문.

    즉, 한 주문자 당 주문 횟수가 1회 이상인 경우도 있다는 뜻임.


     

    3. 관련 SQL 노트정리

     

    ▶ SELECT~ FROM ~ WHERE절

    [IT 교육/SQL]   SQL 1주차 강의 노트정리 [국비지원_스파르타 코딩클럽]

     

    SQL 1주차 강의 노트정리 [국비지원_스파르타 코딩클럽]

    스파르타 코딩클럽 SQL 1주차 강의 '핵심' 노트정리 1. Show tables : 데이터베이스에 저장되어 있는 테이블 불러오기 2. Select ~ from 테이블 : 찾는 정보가 있는 테이블로부터 ~ (뽑고 싶은 필드들)을 가

    nasena.tistory.com

     

    ▶ 집계함수, Group By 절, Order By 절

    [IT 교육/SQL]   SQL 2주차 강의 노트정리 [국비지원_스파르타 코딩클럽]

     

    SQL 2주차 강의 노트정리 [국비지원_스파르타 코딩클럽]

    스파르타 코딩클럽 SQL 2주차 강의 '핵심' 노트정리 1. 통계 : 최대 / 최소 / 평균 / 개수 * 최대 : max(필드명) * 최소: min(필드명) * 평균: avg(필드명) * 개수: count(필드명) * 합계: sum(필드명) 2. Group by (

    nasena.tistory.com

     

    728x90

    댓글