기록

SQL 집약 함수 - COUNT 본문

[Study]/Database

SQL 집약 함수 - COUNT

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

SQL로 데이터에 어떠한 처리나 계산을 하려면 '함수'라는 도구를 사용한다.

 

SQL에는 다양한 집계함수가 마련되어 있지만, 우선 대표적인 다음의 다섯가지 함수가 있다.

 

COUNT : 테이블 레코드 수(행 수)를 계산한다

SUM : 숫자열 데이터의 합계를 구한다

AVG : 숫자열 데이터의 평균을 구한다

MAX : 임의 열이 가진 데이터의 최댓값을 구한다

MIN : 임의 열이 가진 데이터의 최솟값을 구한다

 

이와 같은 집계용 함수를 집약함수라고 한다.

집약이란, '복수의 행을 하나의 행으로 모은다'라는 의미다.

실제로도 모든 집약함수는 복수 행을 입력 데이터로 받으며, 출력하는 데이터는 단일 행이다.

 

[전체 행 수 계산하기]

SELECT COUNT(*) FROM Goods; /* 8 */

 

COUNT() 안에 별표는 '모든 열'을 의미한다.

이 () 안이 COUNT함수 반환 값의 입력 데이터(인수 또는 파라미터)에 해당한다.

 

[NULL을 제외한 행 수 계산하기]

테이블의 전체 행수를 알려면 'SELECT COUNT(*) ~' 처럼 별표를 사용했다.

한편, buy_price 열에 있는 것처럼 NULL을 제외하고 행수를 계산하고 싶은 경우는

대상 열을 한정해서 인수로 지정하면 된다.

 

SELECT COUNT(buy_price) FROM Goods; /* 6 */

 

NULL이 있는 2행은 계산에서 제외되었다.

이와 같이, COUNT함수는 인수에 따라 처리 결과가 달라지기 때문에 주의해야 한다.

 

3개의 col 열이 NULL만 포함한 테이블 생성 후 쿼리를 돌려보더라도

COUNT(*)의 결과는 3, COUNT(col)의 결과는 0이다.

 

이 특성은 COUNT 함수에만 해당하는 것으로, 다른 함수는 별표 자체를 인수로 지정할 수 없다. (에러)

 

COUNT 함수는 인수에 따라 그 결과가 달라진다.

COUNT(*)은 NULL을 포함하는 행 수를, COUNT(열 명)은 NULL을 제외한 행 수를 계산한다.

반응형