[20, 21, 22강] 집계, 그룹화

신은지·2021년 11월 6일
0

SQL 첫걸음

목록 보기
13/14

집계함수 : COUNT, SUM, AVG, MIN, MAX

  • 집계함수란?
    : 인수로 집합을 지정하는 함수. 집합을 특정 방법으로 계산하여 결과를 반환한다.
    : 집합으로부터 하나의 값을 반환(집계)한다. 즉 SELECT구에 사용하면 WHERE와 상관 없이 하나의 행을 반환한다.

COUNT : 행 개수 구하기

  • COUNT
    : COUNT(집합)
    : 해당하는 집합의 행 개수를 계산한다.
    : 집합 안의 NULL 값을 제외하고 처리한다.

  • DISTINCT
    : 데이터 값의 중복을 제거하는 함수
    : SELECT에 지정된 모든 열을 비교해 중복을 판단한다.
    : DISTINCT 지정하지 않을 때 SELECT 디폴트 설정은 ALL
    : COUNT함수의 인수에 DISTINCT 수식자를 지정해 중복을 제거한 결과를 집계할 수 있다.


COUNT 이외의 집계함수

  • SUM
    : 집합의 합계를 구하는 집계함수
    : 수치형 집합만 지정할 수 있다
    : 집합 안의 NULL 값을 제외하고 처리한다.

  • AVG
    : 집합의 평균값을 구하는 집계함수
    : SUM()/COUNT()와 동일한 기능
    : 수치형 집합만 지정할 수 있다
    : 집합 안의 NULL 값을 제외하고 처리한다. NULL까지 포함하고 싶으면 CASE로 0으로 변환 후 계산

  • MIN, MAX
    : 집합의 최소, 최대를 구하는 집계함수
    : 문자열형, 날짜시간형에도 사용할 수 있다
    : 집합 안의 NULL 값을 제외하고 처리한다.


GROUP BY : 그룹화

내부 처리 순서
: WHERE -> GROUP BY -> HAVING -> SELECT -> ORDER BY

  • GROUP BY
    : 집계함수로 넘겨줄 집합을 그룹으로 나눈다
    : SELECT 열 FROM 테이블 GROUP BY 열
    : 지정된 열 값이 같은 행들이 하나의 그룹으로 묶인다
    : 결과값의 정렬은 ORDER BY 구를 사용
    : 각 그룹으로 묶인 값들은 서로 동일하게 처리된다(그룹 값으로 반환) = DISTINCT 같은 중복 제거 기능 가능

GROUP BY vs DISTINCT
: DINSTINCT는 단독으로 중복제거에 사용
: GROUP BY는 집계함수와 함께 사용하지 않는다면 무의미 = 그룹화된 집합이 집계함수 인수로 사용되기 때문

  • HAVING
    : 집계함수를 위한 조건식
    : WHERE 구가 GROUP BY보다 먼저 처리되므로 WHERE 구에서 집계함수 사용 X
    : 그룹별로 집계된 열의 값이나 집계함수의 계산결과가 전달된다
    : WHERE - HAVING 2단 검색 구조!

  • 복수 열의 그룹화
    : 그룹화에 사용하지 않은 열은 SELECT구에서 사용할 수 없다
    : GROUP BY에 지정하지 않은 열이라면 SELECT구에서 집계함수를 사용한다.
    : GROUP BY에 지정한 열이라면 SELECT구에서 그대로 사용할 수 있다.

profile
호그와트 장학생

0개의 댓글