본문 바로가기

Language/MySQL

[MySQL] 행 개수 구하기 - COUNT

[SYNTAX] 집계 함수
COUNT (집합)
SUM (집합)
AVG (집합)
MIN (집합)
MAX (집합)

SQL은 데이터베이스라 불리는 '데이터 집합'을 다루는 언어로 이 같은 집합의 개수나 합계가 궁금하다면 위와 같은 집계 함수를 사용하여 간단하게 구할 수 있다.

 

 

COUNT로 행 개수 구하기

 

sample51 테이블에는 전부 5개의 행이 있으며, COUNT의 결괏값도 5가 나온다.

 

집계 함수의 특징은 복수의 값(집합)에서 하나의 값을 계산해 내는 것이다. 일반적인 함수는 하나의 행에 대하여 하나의 값을 반환하지만, 집계 함수는 집합으로부터 하나의 값을 반환한다. 이렇게 집합으로부터 하나의 값을 계산하는 것을 '집계'라고 한다.

 

SELECT 구는 WHERE구보다 나중에 처리되어 WHERE구로 조건을 지정하면 테이블 전체가 아닌 검색된 행이 COUNT로 넘겨져 WHERE구의 조건에 맞는 행의 개수를 구할 수 있다.

 

집계 함수는 집합 안에 NULL값이 있을 경우 이를 제외하고 처리한다.

name 열에는 NULL값을 가지는 행이 하나 존재하므로 이를 제외한 개수는 4가 된다. 

다만, COUNT(*)의 경우 모든 열의 행수를 카운트하기 때문에 NULL값이 있어도 해당 정보가 무시되지 않는다.

 

 

 

 

 

DISTINCT로 중복 제거

 

집합을 다룰 때 경우에 따라 집합 안에 중복된 값이 있는지 여부가 문제 될 때는 DISTINCT로 중복을 제거한다.

 

DISTINCT는 예약어로 열명이 아니다. SELECT구에서 DISTINCT를 지정하면 중복된 데이터를 제외한 결과를 클라이언트로 반환한다. 중복 여부는 SELECT구에 지정된 모든 열을 비교해 판단한다.

 

name열에서 NULL 값을 제외하고, 중복하지 않는 데이터의 개수를 구할 수 있을까?

방법은 집계 함수의 인수로 DISTINCT를 사용한 수식을 지정하는 것이다.

 

 

DISTINCT는 집계함수의 인수에 수식자로 지정할 수 있다. DISTINCT를 이용해 집합에서 중복을 제거한 뒤 COUNT로 개수를 구하면 된다.

'Language > MySQL' 카테고리의 다른 글

[MySQL] 그룹화 - GROUP BY  (0) 2022.11.15
[MySQL] COUNT 이외의 집계 함수  (0) 2022.11.11
[MySQL] 물리삭제와 논리삭제  (0) 2022.10.10
[MySQL] 데이터 갱신하기 - UPDATE  (0) 2022.10.02
[MySQL] 삭제하기 - DELETE  (1) 2022.09.30