count(*), count(1), count(n)

이윤설·2023년 4월 24일
0

count(*)

NULL 및 중복 값을 포함하는 행을 포함하여 검색

count(1)

컬럼이 NULL 이 아닌 값을 제외하고 카운트

count(n)

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이 어떤 값을 가지든 상관없이 모든 레코드를 카운트하기 때문이다.

profile
화려한 외면이 아닌 단단한 내면

0개의 댓글