SQL 첫걸음(ch21. COUNT 이외의 집계함수 ~ ch22. 그룹화 - GROUP BY)

김도형·2022년 10월 10일
0

21장 COUNT 이외의 집계함수

SUM(합계 구하기)

  • SUM 집계함수는 수치형만 가능
  • NULL 값 무시
  • 문법
    • SUM(컬럼명)

AVG(평균)

  • AVG 집계함수는 수치형만 가능
  • NULL 값 무시
  • 문법
    • AVG(컬럼명)

MIN, MAX 최솟값, 최댓값 구하기

  • MIN, MAX 집계는 수치형, 문자열, 날짜시간형도 사용 가능
  • NULL 값 무시
  • 인수가 문자열이면, ASCII 코드를 이용해서 정렬된다.
    • MIN : 숫자 -> 특수문자 -> 영어대문자 -> 특수문자 -> 영어소문자 -> 특수문자 -> 한글 순
      MAX : 한글 -> 특수문자 -> 영어소문자 -> 특수문자 -> 영어대문자 -> 특수문자 -> 숫자 순

22장 그룹화 - GROUP BY

  • 지정된 열의 값이 같은 행이 하나의 그룹으로 묶임
  • 만약 GROUP BY 구만 사용 시, DISTINCT와 같은 결과가 나온다.
  • 그래서 집계함수와 쓰지 않으면 별 의미가 없다.
  • 사용 예시
    해당 테이블 내에서, 점포별 팔았던 상품 수량
SELECT 점포, SUM(팔았던 상품 수량) FROM 테이블 GROUP BY 점포;

HAVING 구로 조건 지정

  • WHERE 구와 GROUP BY 구는 같이 사용 할 수 없다.
  • 내부 처리 순서에 따라 WHERE 구가 GROUP BY 구보다 빨리 처리되기 때문에 오류 발생한다.

    내부처리
    WHERE 구 -> GROUP BY 구 -> HAVING 구 -> SELECT 구 -> ORDER BY 구

  • 그래서, WHERE 구 대신 HAVING 구 사용한다.
  • SELECT 구의 별명도 HAVING 구와 GROUP BY 구와 같이 쓸 수 없다. 내부 처리 순서 이유 때문이다.

복수열의 그룹화

GROUP BY에서 지정한 열 이외의 열은 집계함수를 사용하지 않은 채 SELECT 구에 지정할 수 없다.

SELECT no, name, quantity FROM sample51 GROUP BY name; 

no와 quantity 열에 의해서 에러 발생, 지정 열 name만 SELECT 구에 지정 가능

결괏값 정렬

  • GROUP BY만으로는 실행결과 순서를 정렬할 수 없다.
    그래서 ORDER BY 구를 지정해서 사용하면 된다.

출처 : SQL 첫걸음 아사이 아츠시 지음 [한빛미디어]

profile
3년간 웹/앱, 자동제어 QA 🔜 개발자로 전향하여 현재 교육 회사에서 백엔드 개발자로 근무 중입니다.(LinkedIn : https://www.linkedin.com/in/dohyoung-kim-5ab09214b)

0개의 댓글