NULL 및 중복 값을 포함하는 행을 포함하여 검색
컬럼이 NULL 이 아닌 값을 제외하고 카운트
students
+----+--------+------+
| id | name | age |
+----+--------+------+
| 1 | Alice | 20 |
| 2 | Bob | 19 |
| 3 | Charlie| 21 |
| 4 | David | NULL |
+----+--------+------+
위와 같은 테이블이 있다고 치면
SELECT COUNT(age) FROM students;
-- Output: 3
결과값은 3이다. 왜냐하면 age 열에서 해당 행들 중에서 NULL 값을 제외하고 카운트하기 때문이다.
students
테이블에서 2
라는 열이 없다면, count(2)
는 오류가 발생할 것이다. count(2)
는 students
테이블의 레코드 중에서 2
라는 열의 값이 NULL
이 아닌 경우의 수를 계산한다. 따라서, 2
라는 열이 없으면 count(2)
는 계산할 수 없다.
만약 2
라는 열이 있다면, count(2)
는 students
테이블의 레코드 중에서 2
라는 열의 값이 NULL
이 아닌 경우의 수를 계산한다. 즉, 2
라는 열의 값이 NULL
이 아닌 레코드 수가 출력된다.
cf. 그럼 count(1)은 뭔데?
count(1)
은 students
테이블의 레코드 중에서 1
이라는 열의 값이 NULL
이 아닌 경우의 수를 계산한다. count(1)
에서 1
은 어떤 값이든 상관없다. 실제 데이터와는 아무 상관이 없는 숫자일 뿐이다.
count(*)
과 count(1)
은 동일한 결과를 반환한다. 둘 다 students
테이블의 레코드 수를 반환합니다. 이는 *
과 1
이 어떤 값을 가지든 상관없이 모든 레코드를 카운트하기 때문이다.