기록

SQL 집약함수 - SUM, AVG, MAX, MIN 본문

[Study]/Database

SQL 집약함수 - SUM, AVG, MAX, MIN

Dannnnnn 2019. 7. 24. 17:49
반응형

나머지 네 가지 집약 함수의 사용법에 대해 알아보자.

 

구문은 기본적으로 COUNT함수와 동일하나, 언급했다시피 별표를 인수로 사용할 수 없다.

 

[SUM 함수]

복수의 행으로부터 합계를 구하는 법을 알아보자.

 

SELECT SUM(sell_price) From Goods;

 

SELECT SUM(sell_price) AS 판매단가, SUM(buy_price) AS 매입단가 From Goods;

 

여기서, NULL은 0으로 치부되는게 아니라 처음부터 계산식에 포함되지 않는다.

 

집약함수는 NULL을 제외한다. 단, COUNT(*)만은 예외적으로 NULL을 포함한다.

 

[AVG 함수]

복수의 행으로부터 평균 값을 구하는 법을 알아보자.

 

SELECT AVG(sell_price) From Goods;

 

(값의 합계)/(값의 수)라는 평균값 구하는 공식을 그대로 사용한다.

NULL을 포함한 행이 있다면 SUM함수와 마찬가지로 미리 제외된 상태에서 계산이 이루어진다.

 

분모가 NULL 포함 행을 제외한 만큼 줄어드는데,

분모는 그대로 하고 분자의 NULL을 0으로 간주해서 계산을 해야하는 경우가 있다.

이 방식을 구현하는 방법에 대해선 다음에 다룰 것이다.

 

[MAX, MIN 함수]

복수의 행에서 최댓값 또는 최솟값을 구하려면 각각 MAX와 MIN 함수를 사용한다.

이 두가지도 SUM함수와 같은 구문으로 인수로 열을 지정한다.

 

SELECT MAX(sell_price), MIN(buy_price)

FROM Goods;

 

MAX/MIN 함수가 SUM/AVG 함수와 다른 점이 하나 있다.

그것은 SUM/AVG함수가 숫자형 열만 이용할 수 있다면,

MAX/MIN 함수는 원칙상 어떠한 데이터형도 사용할 수 있다는 점이다.

 

SELECT MAX(register_date), MIN(register_date) FROM Goods;

 

다시 말하면, 순서를 정할 수 있는 데이터라면 최댓값과 최솟값도 자연스럽게 정해지기 때문에

두 가지 함수 모두 적용할 수 있는 것이다.

 

반면, 날짜형과 문자형은 평균값과 합계의 의미가 없기 때문에 SUM/AVG 함수를 적용할 수 없다.

 

MAX/MIN 함수는 거의 모든 데이터형에 적용할 수 있다.

SUM/AVG 함수는 숫자형 데이터만 가능하다.

반응형