본문 바로가기
Computer Science/Database

[SQL] AVG, MIN, MAX, SUM, COUNT, GROUP BY, HAVING

by JuHy_ 2020. 6. 15.

Aggregate Functions

데이터를 조회할 때 집계 함수는 여러 개의 row를 집계하여 하나의 결과를 나타낼 때 사용한다.

기본적인 집계 함수로는 AVG(평균값), MIN(최솟값), MAX(최댓값), SUM(합), COUNT(갯수) 등이 있다.

그리고 여러 개의 그룹으로 나누어 집계할 때 사용되는 GROUP BY 키워드와,

집계 함수의 결과를 통해 조건을 설정할 때 사용하는 HAVING 키워드가 있다.

 

AVG

AVG 키워드는 한 속성에 해당하는 값들의 평균값을 계산할 때 사용한다.

SELECT AVG(salary) FROM instructor WHERE dept_name='Comp.Sci.'

예를 들어, 위 SQL은 컴퓨터공학과 교수들의 연봉 평균을 구하는 SQL이다.

 

MIN

MIN 키워드는 한 속성에 해당하는 값들의 최소값을 구할 때 사용한다.

SELECT MIN(salary) FROM instructor WHERE dept_name='Comp.Sci.'

예를 들어, 위 SQL은 컴퓨터공학과 교수들의 연봉 중 가장 낮은 연봉을 구하는 SQL이다.

 

MAX

MAX 키워드는 한 속성에 해당하는 값들의 최댓값을 구할 때 사용한다.

SELECT MAX(salary) FROM instructor WHERE dept_name='Comp.Sci.'

예를 들어, 위 SQL은 컴퓨터공학과 교수들의 연봉 중 가장 높은 연봉을 구하는 SQL이다.

 

SUM

SUM 키워드는 한 속성에 해당하는 값들의 합을 구할 때 사용한다.

SELECT SUM(salary) FROM instructor WHERE dept_name='Comp.Sci.'

예를 들어, 위 SQL은 컴퓨터공학과 교수들의 연봉의 합을 구하는 SQL이다.

 

 

COUNT

COUNT 키워드는 해당 속성에 해당하는 값들의 갯수를 구할 때 사용한다.

SELECT COUNT(DISTINCT id) FROM instructor WHERE dept_name='Comp.Sci.'

예를 들어, 위 SQL은 컴퓨터공학과 교수들의 수를 구하는 SQL이다.

SELECT COUNT(*) FROM instructor

또는 위와 같이 속성이 아닌 *을 넣어 테이블의 row 갯수를 쉽게 구할 수도 있다.

 

GROUP BY

GROUP BY 키워드는 여러 개의 그룹으로 row들을 나누어 집계할 때 사용한다.

SELECT dept_name, AVG(salary) AS avg_salary
FROM instructor
GROUP BY dept_name

예를 들어, 위 SQL은 교수들을 학과별로 묶어 평균 연봉을 avg_salary 라는 속성으로 나타내는 SQL이다.

 

HAVING

HAVING 키워드는 집계 함수를 통해 계산한 결과를 조건으로 사용할 때 사용한다.

SELECT dept_name, AVG(salary)
FROM instructor
GROUP BY dept_name
HAVING AVG(salary)>42000

위 SQL은 마찬가지로 학과별 교수들의 평균 연봉을 구하지만, 평균 연봉이 42000 이상인 학과만 나타내게 된다.