집계함수, GROUP BY, HAVING

Daeun Kim·2022년 11월 5일
0

SQL

목록 보기
8/31
  1. 집계함수
    여러 조건을 입력해서 하나의 결과값을 내는 함수
    AVG, COUNT, MAX, MIN,SUM
    SELECT 혹은 HAVING 구문과 함께 사용해야하고 대상에 ()표시를 추가해야한다.
    집계함수 1개로는 1개의 열만 대상으로 할 수 있다.

AVG는 소수점을 결과값으로 가지게 됨으로, ROUND()와 함께 사용해 결과값의 소수점 자리수를 제한할 수 있다.
ROUND(AVG(열이름),소수점자리수)

  • COUNT가 특정 열을 대상으로 사용될 때는 NULL값을 제외하고 집계하는 것을 기본으로 한다.
  • 집계함수와 DISTINCT를 함께 이용할 경우 집계함수의 대상에 DISTINCT까지가 들어가야 한다. SELECT COUNT(DISTINCT name) FROM ANIMAL_INS

2.GROUP BY
일정 카테고리별로 열을 집계하는 함수
열중에 카테고리 열을 지정하여 각 카테고리의 집계값을 추출하는데 이용한다.
카테고리 ABC가 있을때, ABC 각각의 합계, 평균을 추출할 수 있음

SELECT 카테고리열, 집계함수()
FROM 테이블이름
(WHERE 조건)
GROUP BY 카테고리열

SELECT의 대상으로 하는 카테고리열은 GROUP BY구문에도 반드시 포함되어야 한다.
집계함수의 대상인 데이터는 GROUP BY 구문에 반드시 포함될 필요는 없다.

WHERE의 조건에는 집계함수가 포함될 수 없다.
집계함수를 포함하여 조건필터를 걸려면 HAVING 구문이 필요하다.

테이블에 타임스탬프 (날짜+시간) 열이 있을때 날짜를 대상으로 하기 위해서는, DATE 등 날짜를 추출하는 구문 들을 함께 이용해야 한다.

ORDER BY 구문에 집계함수를 대상으로 하게 하여, 집계값 기준으로 정렬하게 할 수도 있다.

3.HAVING
집계가 수행된 이후 필터링하는 구문
순서상 위 쿼리에서 GROUP BY의 뒤에 위치한다 (집계 완료 후 필터를 진행할 수 있기 때문에)
GROUP BY로 집계된 결과값을 대상으로만 할 수 있다는 점에서 WHERE과 차이가 있다.
WHERE이 이 조건을 기준으로 추출해줘라면, HAVING은 추출된 값에서 이 조건으로 보여줘라고 해석해도 될듯.

profile
공부하는 것들을 적는 블로그.

0개의 댓글