Computer >> 컴퓨터 >  >> 프로그래밍 >> MySQL

MySQL 단일 쿼리로 특정 열의 값 발생 횟수 계산하기

MySQL에서 하나의 쿼리만으로 특정 열에 있는 값이 몇 번 등장하는지 확인하고 싶다면, GROUP BY 절과 IN() 연산자를 함께 사용하면 됩니다. 이 글에서는 실제 예제를 통해 그 과정을 단계별로 살펴보겠습니다.

1. 테이블 생성하기

먼저 예제에 사용할 테이블을 생성합니다.

mysql> create table DemoTable
-> (
-> Id int NOT NULL AUTO_INCREMENT PRIMARY KEY,
-> Name varchar(100)
-> );
Query OK, 0 rows affected (0.87 sec)

2. 샘플 데이터 삽입하기

INSERT 명령을 사용하여 테이블에 여러 개의 레코드를 추가합니다.

mysql> insert into DemoTable(Name) values('John');
Query OK, 1 row affected (0.23 sec)

mysql> insert into DemoTable(Name) values('Chris');
Query OK, 1 row affected (0.12 sec)

mysql> insert into DemoTable(Name) values('David');
Query OK, 1 row affected (0.23 sec)

mysql> insert into DemoTable(Name) values('Chris');
Query OK, 1 row affected (0.17 sec)

mysql> insert into DemoTable(Name) values('Chris');
Query OK, 1 row affected (0.21 sec)

mysql> insert into DemoTable(Name) values('John');
Query OK, 1 row affected (0.10 sec)

mysql> insert into DemoTable(Name) values('Carol');
Query OK, 1 row affected (0.20 sec)

mysql> insert into DemoTable(Name) values('Sam');
Query OK, 1 row affected (0.19 sec)

3. 저장된 전체 데이터 확인하기

SELECT 문으로 테이블의 모든 레코드를 조회해 보겠습니다.

mysql> select *from DemoTable;

실행 결과는 다음과 같습니다.

+----+-------+
| Id | Name |
+----+-------+
| 1 | John |
| 2 | Chris |
| 3 | David |
| 4 | Chris |
| 5 | Chris |
| 6 | John |
| 7 | Carol |
| 8 | Sam |
+----+-------+
8 rows in set (0.00 sec)

4. 단일 쿼리로 특정 값의 발생 횟수 세기

이제 GROUP BY 절과 IN()을 조합하여 'John'과 'Chris'라는 이름이 각각 몇 번 나타나는지 한 번의 쿼리로 집계해 보겠습니다.

mysql> select Name,count(*) AS Occurrences from DemoTable
-> where Name in('John','Chris') group by Name;

실행 결과는 다음과 같습니다.

+-------+-------------+
| Name | Occurrences |
+-------+-------------+
| John | 2 |
| Chris | 3 |
+-------+-------------+
2 rows in set (0.00 sec)

결과를 보면 'John'은 2번, 'Chris'는 3번 등장한 것을 확인할 수 있습니다. 이처럼 WHERE 절의 IN()으로 원하는 값을 필터링하고, GROUP BY로 그룹화한 뒤 COUNT(*)를 사용하면 복잡한 서브쿼리 없이도 손쉽게 값별 발생 횟수를 집계할 수 있습니다.