GROUP BY와 COUNT(*)를 사용하면 특정 컬럼 값별로 레코드 수를 쉽게 집계할 수 있습니다.
테이블 생성 및 데이터 삽입
mysql> CREATE TABLE DemoTable (
-> UserName VARCHAR(20),
-> UserType ENUM('New User','Registered User')
-> );
Query OK, 0 rows affected (0.60 sec)
mysql> INSERT INTO DemoTable VALUES('Chris','New User');
Query OK, 1 row affected (0.12 sec)
mysql> INSERT INTO DemoTable VALUES('David','New User');
Query OK, 1 row affected (0.09 sec)
mysql> INSERT INTO DemoTable VALUES('Mike','Registered User');
Query OK, 1 row affected (0.20 sec)
mysql> INSERT INTO DemoTable VALUES('Sam','New User');
Query OK, 1 row affected (0.10 sec)
데이터 조회
mysql> SELECT * FROM DemoTable;
+----------+-----------------+ | UserName | UserType | +----------+-----------------+ | Chris | New User | | David | New User | | Mike | Registered User | | Sam | New User | +----------+-----------------+ 4 rows in set (0.00 sec)
유형별 인원 수 집계
mysql> SELECT COUNT(*), UserType FROM DemoTable GROUP BY UserType;
+----------+-----------------+ | COUNT(*) | UserType | +----------+-----------------+ | 3 | New User | | 1 | Registered User | +----------+-----------------+ 2 rows in set (0.00 sec)
활용 팁: COUNT(*) 대신 COUNT(UserName)을 써도 결과는 같지만, NULL 값을 제외하고 싶을 땐 컬럼명을 지정하는 것이 좋습니다. 여러 조건으로 그룹핑하려면 GROUP BY UserType, Status처럼 콤마로 구분하세요.