기록
SQL 집약 함수 - COUNT 본문
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을 제외한 행 수를 계산한다.
'[Study] > Database' 카테고리의 다른 글
SQL 집약함수 사용 시 중복값 제외 (DISTINCT) (0) | 2019.07.24 |
---|---|
SQL 집약함수 - SUM, AVG, MAX, MIN (0) | 2019.07.24 |
database - AND연산자가 OR연산자보다 우선순위가 높음 (0) | 2019.07.24 |
database - NULL인 행 IS NULL로 선택하기 (비교연산자 사용불가) (0) | 2019.07.24 |
database - 산술연산자와 비교연산자 (0) | 2019.07.24 |