MySQL에서 특정 필드(컬럼)에 저장된 각 요소가 몇 번씩 등장하는지 확인하려면 COUNT() 함수와 GROUP BY 절을 함께 사용하면 됩니다. 이번 글에서는 예제 테이블을 직접 만들고, 필드에 포함된 각 값의 개수를 집계하는 과정을 단계별로 살펴보겠습니다.
1. 예제 테이블 생성
먼저 데모용 테이블을 생성합니다.
mysql> create table DemoTable
-> (
-> ProductName varchar(100)
-> );
Query OK, 0 rows affected (0.59 sec)
2. 데이터 삽입
INSERT 명령으로 여러 개의 레코드를 추가합니다. 일부러 중복된 상품명도 함께 넣어 집계 결과를 확인하기 좋게 구성했습니다.
mysql> insert into DemoTable values('Product-1');
Query OK, 1 row affected (0.26 sec)
mysql> insert into DemoTable values('Product-2');
Query OK, 1 row affected (0.12 sec)
mysql> insert into DemoTable values('Product-3');
Query OK, 1 row affected (0.16 sec)
mysql> insert into DemoTable values('Product-3');
Query OK, 1 row affected (0.29 sec)
mysql> insert into DemoTable values('Product-2');
Query OK, 1 row affected (0.15 sec)
mysql> insert into DemoTable values('Product-4');
Query OK, 1 row affected (0.12 sec)
mysql> insert into DemoTable values('Product-5');
Query OK, 1 row affected (0.14 sec)
mysql> insert into DemoTable values('Product-1');
Query OK, 1 row affected (0.11 sec)3. 전체 데이터 조회
SELECT 문으로 테이블의 모든 레코드를 확인합니다.
mysql> select *from DemoTable;
실행 결과는 다음과 같습니다.
+-------------+
| ProductName |
+-------------+
| Product-1 |
| Product-2 |
| Product-3 |
| Product-3 |
| Product-2 |
| Product-4 |
| Product-5 |
| Product-1 |
+-------------+
8 rows in set (0.00 sec)
4. COUNT()로 요소별 개수 집계하기
필드에 있는 각 요소의 개수를 구하는 핵심 쿼리는 다음과 같습니다. COUNT() 함수로 ProductName의 개수를 세고, GROUP BY 절로 동일한 값을 가진 행들을 하나의 그룹으로 묶어줍니다.
mysql> select ProductName,count(ProductName) as TotalCount from DemoTable group by ProductName;
위 쿼리를 실행하면 다음과 같은 결과가 출력됩니다.
+-------------+------------+
| ProductName | TotalCount |
+-------------+------------+
| Product-1 | 2 |
| Product-2 | 2 |
| Product-3 | 2 |
| Product-4 | 1 |
| Product-5 | 1 |
+-------------+------------+
5 rows in set (0.05 sec)
정리
결과를 보면 Product-1, Product-2, Product-3은 각각 2번씩, Product-4와 Product-5는 1번씩 등장했음을 알 수 있습니다. 이처럼 COUNT() 함수와 GROUP BY 절을 조합하면 특정 컬럼에 담긴 값들의 빈도수를 손쉽게 집계할 수 있습니다. 참고로 NULL 여부와 관계없이 전체 행 수만 필요하다면 COUNT(*)를 사용하는 것이 더 적합합니다.