MySQL에서 여러 열의 데이터 개수를 한 번에 구하고 싶을 때가 있습니다. 이때 COUNT() 함수를 활용하면 되는데, 중요한 점은 COUNT 함수가 기본적으로 NULL 값을 자동으로 제외한다는 것입니다. 실제 예제를 통해 확인해 보겠습니다.
1. 테이블 생성하기
먼저 학생 이름과 점수를 저장할 테이블을 생성합니다.
mysql> create table DemoTable1975
(
StudentName varchar(20),
StudentMarks int
);
Query OK, 0 rows affected (0.00 sec)
2. 샘플 데이터 삽입하기
INSERT 명령어를 사용해 몇 개의 레코드를 추가합니다. 마지막 레코드에는 의도적으로 NULL 값을 넣었습니다.
mysql> insert into DemoTable1975 values('John',45);
Query OK, 1 row affected (0.00 sec)
mysql> insert into DemoTable1975 values('Chris',67);
Query OK, 1 row affected (0.00 sec)
mysql> insert into DemoTable1975 values('David',59);
Query OK, 1 row affected (0.00 sec)
mysql> insert into DemoTable1975 values('Bob',NULL);
Query OK, 1 row affected (0.00 sec)3. 저장된 데이터 확인하기
SELECT 문으로 테이블의 전체 레코드를 조회합니다.
mysql> select * from DemoTable1975;
실행 결과는 다음과 같습니다.
+-------------+--------------+
| StudentName | StudentMarks |
+-------------+--------------+
| John | 45 |
| Chris | 67 |
| David | 59 |
| Bob | NULL |
+-------------+--------------+
4 rows in set (0.00 sec)
4. 두 열의 값 개수 합산하기
이제 각 열의 개수를 구한 뒤 더하는 쿼리를 실행합니다.
mysql> select count(StudentName)+count(StudentMarks) from DemoTable1975;
실행 결과는 다음과 같습니다.
+----------------------------------------+
| count(StudentName)+count(StudentMarks) |
+----------------------------------------+
| 7 |
+----------------------------------------+
1 row in set (0.00 sec)
결과 분석
전체 레코드는 4개이지만 결과는 7로 나왔습니다. 그 이유는 다음과 같습니다.
StudentName열: NULL이 없으므로 4개 카운트StudentMarks열: Bob의 점수가 NULL이므로 3개만 카운트
즉, 4 + 3 = 7이 되며, COUNT 함수가 NULL 값을 자동으로 제외했기 때문입니다. 만약 NULL까지 포함한 전체 행 수를 구하려면 COUNT(*)를 사용해야 하며, 특정 열의 유효한 값만 세고 싶다면 위와 같이 COUNT(열이름)을 사용하면 됩니다.