MYSQL

[SQL] COUNT 함수 제대로 이해하기

_알파카 2024. 3. 21. 16:54
728x90

count 함수는 SQL에서 레코드의 개수를 셀 때 사용한다. 

count는 쉬운거아냐??

ㄴ나도 그렇게 생각했지만, 몰랐던 것이 있어 기록으로 남겨본다! 

 

이런 count_test 테이블이 있다고 가정해보자. 

SELECT COUNT(1) FROM count_test
-- 7

SELECT COUNT(0) FROM count_test
-- 7

SELECT COUNT(NULL) FROM count_test
-- 0

SELECT COUNT(value) FROM count_test
-- 6

SELECT COUNT(DISTINCT value) FROM count_test
-- 4

 

위의 쿼리들은 count 함수의 다양한 예시이다. 

count 함수의 인자에 들어있는 숫자는 단순히 행의 존재 여부를 나타낸다. 

 

즉, count(0)과 count(1)은 모두 같은 의미라는 것이다!

따라서, count의 인자로 들어가는 모든 상수는 모두 동일한 결과를 생성한다. 

 

만약, count의 인자로 NULL을 제공하면, 레코드의 개수를 세지 않는다. 

 

또한, count의 인자로 행 이름이 들어가면 null이 아닌 것들의 개수를 세게 된다. 

 

 

모든 것들을 정리하면 다음과 같다!

count(상수)
-- 모든 행의 개수

count(NULL)
-- 개수를 세지 않음 (0 반환)

count(행 이름)
-- NULL이 아닌 것들의 개수 반환

count(distinct 행 이름)
-- NULL이 아닌 것들 중 유일한 행의 개수

 

 

잘 알고 있다고 생각했던 count 함수였는데, 생각보다 다양한 경우가 많아서 놀랐다. 

728x90