본문 바로가기
Database/MySQL

MIN, MAX, AVG, SUM, COUNT 집계함수로 통계내기

by 컴돈AI 2024. 2. 28.

목차

    집계 함수(Aggregate Function)

    • 집계함수는 특정 컬럼의 합계, 평균, 최댓값 등 통계를 내주는 함수입니다.
    • 집계함수는 한 컬럼에 대해서 적용됩니다.
    • AS를 통해서 새로운 컬럼명으로 지정이 가능합니다.
      • 지정해주지 않을 경우 SUM(사용금액) 처럼 컬럼명이 그대로 지정됩니다.
        • SELECT SUM(사용금액) FROM card
      • AS로 새롭게 컬럼명을 지정한 경우
        • SELECT SUM(사용금액) AS 합계 FROM card

    MAX(컬럼명)

    • SELECT MAX(컬럼명) FROM 테이블명
    • 예시
      • 본 출력
        • SELECT 사용금액 FROM card
      • MAX(컬럼명)
        • SELECT MAX(사용금액) FROM card

    MIN(컬럼명)

    • SELECT MIN(컬럼명) FROM 테이블명

    AVG(컬럼명)

    • SELECT AVG(컬럼명) FROM 테이블명

    SUM(컬럼명)

    • SELECT SUM(컬럼명) FROM 테이블명

    COUNT(컬럼명)

      • SELECT COUNT(컬럼명) FROM 테이블명
        • 당 컬럼이 NOT NULL인 ROW의 수만 셉니다.
      • SELECT COUNT(*) FROM 테이블명
        • 테이블의 모든 ROW를 셉니다.(NULL인 값도 포함해서 COUNT)
      • SELECT COUNT(DISTINCT 컬럼명) FROM 테이블명
        • 지정된 컬럼에 대해 중복을 제거한 ROW수를 셉니다.
      • 예시
        • card 테이블
        • SELECT COUNT(DISTINCT 고객등급,연체횟수) FROM card;
          
          SELECT COUNT(DISTINCT 고객등급) FROM card;
          
          SELECT COUNT(DISTINCT 연체횟수) FROM card;
          • 순서대로 10, 3 , 8 의 결과를 가집니다.

    예제

    • 고객 등급이 vip 인 사람들만 통계내기(등급이 vip 인 사람들의 평균 사용 금액)) ( 일부 행만 골라서 통계내기 가능 )
      • SELECT AVG(사용금액) FROM card WHERE 고객등급='vip'
         
    • 중복되지 않는 연체 횟수값들의 평균을 구하기 (DISTINCT사용)
      • SELECT AVG(DISTINCT 연체 횟수) FROM card
    • MAX MIN 안 쓰고 최대, 최소 구해보기. (ORDER BY와 LIMIT 1 사용)
      • 정렬하기 ORDER BY (일부상황에서는 MIN MAX 쓰는 거보다 이게 훨씬 더 빠를 수가 있음 )
      • MAX
        • SELECT 사용금액 FROM card ORDER BY 사용금액 DESC LIMIT 1
      • MIN
        • SELECT 사용금액 FROM card ORDER BY 사용금액 ASC LIMIT 1
    • 최대 결제 횟수와 최소 결제 횟수를 출력하기
      • SELECT MAX(결제횟수) AS 최대 , MIN(결제횟수) AS 최소 FROM card
    • 고객등급이 vip인 사람들의 '평균 결제횟수'와 고객등급이 vip인 사람들의 '사용금액 총 합계'를 구해보기
      • SELECT AVG(결제횟수) AS '평균 결제횟수',SUM(사용금액) AS '사용금액 총 합계' FROM card WHERE 고객등급='vip'
    • 연체횟수가 1회 이하인 사람은 몇 명일까요?
      • SELECT count(*) FROM card WHERE 연체횟수<=1

    출처