자격증/SQLD

[SQL 첫걸음] 20강. 행 개수 구하기 - COUNT

동호다찌 2022. 4. 4. 09:26

COUNT

SQL에서 대표적인 집계함수(집합을 다루는 함수)는 다음과 같다.
일반적인 함수는 하나의 값을 인수로 받는 반면 집계함수는 집합을 인수로 받는다.

> COUNT 
> SUM 
> AVG 
> MIN 
> MAX

COUNT로 행 개수 구하기

COUNT는 인수로 주어진 집합의 개수를 반환한다.

SELECT COUNT(*) FROM sample51;
SELECT COUNT(*) FROM sample51 WHERE name='A';

  • sample51에는 총 5개의 행이 있고, COUNT집계함수에서 *은 '모든열=테이블 전체'를 의미하기 때문에 위 명령은 5를 반환한다. 이는 WHERE구를 지정해 검색 조건을 추가할 수 있다.

집계함수와 NULL 값

  • 집계함수는 집합 안에 NULL 값이 있을 경우 이를 제외하고 처리한다.
SELECT COUNT(no), COUNT(name) FROM sample51;

DISTINCT로 중복 제거

  • 경우에 따라 집합 안에 중복된 값이 있는지 여부가 문제될 때도 있다. 데이터가 중복되지 않는 경우를 '유일한 값을 가진다'고 표현한다.
  • sample51 테이블의 1행과 2행은 name열에서 중복된 값을 갖는다.
  • SQL 명령은 이런 중복된 값을 제거하는 DISTINCT 함수를 제공한다.

집계함수에서 DISTINCT

  • 특정 열에서 NULL값을 제외하고 중복되지 않는 데이터의 개수를 COUNT하려면 어떻게 해야할까?
    • WHERE구에서는 검색조건을 지정할 뿐 DISTINCT같이 중복값을 확인하는 함수는 없다.
    • SELECT DISTINCT COUNT(name)은 COUNT가 먼저 실행되기 때문에 안된다.

바로 집계함수의 인수로 DISTINCT를 사용한 수식을 지정하면된다.

SELECT COUNT(ALL name), COUNT(DISTINCT name) FROM sample51;