MySQL에서 COUNT와 함께 SELECT를 수행하려면 집계 함수인 COUNT()를 사용하면 됩니다. 이 함수는 지정된 컬럼의 값 개수를 세어 그룹별 결과를 반환합니다.
1. 테이블 생성하기
먼저 예제에 사용할 테이블을 생성해 보겠습니다.
mysql> create table DemoTable
(
Id int NOT NULL AUTO_INCREMENT PRIMARY KEY,
Name varchar(100),
Subject varchar(100)
);
Query OK, 0 rows affected (0.54 sec)2. 데이터 삽입하기
INSERT 명령을 사용하여 테이블에 여러 레코드를 추가합니다.
mysql> insert into DemoTable(Name,Subject) values('John','MySQL');
Query OK, 1 row affected (0.17 sec)
mysql> insert into DemoTable(Name,Subject) values('John','Java');
Query OK, 1 row affected (0.17 sec)
mysql> insert into DemoTable(Name,Subject) values('Carol','MongoDB');
Query OK, 1 row affected (0.15 sec)
mysql> insert into DemoTable(Name,Subject) values('Carol','Java');
Query OK, 1 row affected (0.11 sec)
mysql> insert into DemoTable(Name,Subject) values('Carol','MySQL');
Query OK, 1 row affected (0.16 sec)
mysql> insert into DemoTable(Name,Subject) values('John','MySQL');
Query OK, 1 row affected (0.23 sec)
mysql> insert into DemoTable(Name,Subject) values('Carol','MongoDB');
Query OK, 1 row affected (0.26 sec)3. 전체 레코드 조회하기
SELECT 문을 사용하여 테이블의 모든 레코드를 확인합니다.
mysql> select *from DemoTable;
출력 결과
+----+-------+---------+ | Id | Name | Subject | +----+-------+---------+ | 1 | John | MySQL | | 2 | John | Java | | 3 | Carol | MongoDB | | 4 | Carol | Java | | 5 | Carol | MySQL | | 6 | John | MySQL | | 7 | Carol | MongoDB | +----+-------+---------+ 7 rows in set (0.00 sec)
4. COUNT를 사용한 SELECT 쿼리
다음은 GROUP BY 절과 함께 COUNT를 사용하여 이름별 과목 개수를 집계하는 쿼리입니다.
mysql> select Name,Subject,count(Subject) from DemoTable group by Subject,Name;
출력 결과
+-------+---------+----------------+ | Name | Subject | count(Subject) | +-------+---------+----------------+ | John | MySQL | 2 | | John | Java | 1 | | Carol | MongoDB | 2 | | Carol | Java | 1 | | Carol | MySQL | 1 | +-------+---------+----------------+ 5 rows in set (0.00 sec)
위 결과에서 확인할 수 있듯이, GROUP BY 절을 함께 사용하면 각 학생이 과목별로 몇 번 수강했는지 손쉽게 집계할 수 있습니다. 예를 들어 John은 MySQL을 2번, Carol은 MongoDB를 2번 수강한 것을 알 수 있습니다.