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

MySQL에서 특정 열에 값이 나타나는 횟수 세는 방법

MySQL에서 특정 열에 같은 값이 몇 번 나타나는지 확인하려면 집계 함수 COUNT()GROUP BY 절을 함께 사용하면 됩니다. GROUP BY는 동일한 값을 가진 행들을 하나의 그룹으로 묶어주고, COUNT(*)는 각 그룹에 속한 행의 개수를 반환합니다.

기본 문법

SELECT yourColumnName, COUNT(*) AS anyVariableName
FROM yourTableName
GROUP BY yourColumnName;

예제 테이블 생성

위 구문을 실제로 이해하기 위해 예제 테이블을 먼저 만들어 보겠습니다. 테이블 생성 쿼리는 다음과 같습니다.

mysql> CREATE TABLE CountSameValue
-> (
-> Id int,
-> Name varchar(100),
-> Marks int
-> );
Query OK, 0 rows affected (0.70 sec)

데이터 삽입

INSERT 명령을 사용하여 테이블에 레코드를 삽입합니다. 쿼리는 다음과 같습니다.

mysql> INSERT INTO CountSameValue VALUES(1,'Sam',67);
Query OK, 1 row affected (0.17 sec)

mysql> INSERT INTO CountSameValue VALUES(2,'Mike',87);
Query OK, 1 row affected (0.19 sec)

mysql> INSERT INTO CountSameValue VALUES(3,'Carol',67);
Query OK, 1 row affected (0.24 sec)

mysql> INSERT INTO CountSameValue VALUES(4,'Bob',87);
Query OK, 1 row affected (0.18 sec)

mysql> INSERT INTO CountSameValue VALUES(5,'John',71);
Query OK, 1 row affected (0.17 sec)

mysql> INSERT INTO CountSameValue VALUES(6,'Adam',66);
Query OK, 1 row affected (0.18 sec)

mysql> INSERT INTO CountSameValue VALUES(7,'David',71);
Query OK, 1 row affected (0.20 sec)

mysql> INSERT INTO CountSameValue VALUES(8,'Maria',67);
Query OK, 1 row affected (0.16 sec)

저장된 데이터 확인

SELECT 문을 사용하여 테이블의 모든 레코드를 조회합니다.

mysql> SELECT * FROM CountSameValue;

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

+------+-------+-------+
| Id   | Name  | Marks |
+------+-------+-------+
| 1    | Sam   | 67    |
| 2    | Mike  | 87    |
| 3    | Carol | 67    |
| 4    | Bob   | 87    |
| 5    | John  | 71    |
| 6    | Adam  | 66    |
| 7    | David | 71    |
| 8    | Maria | 67    |
+------+-------+-------+
8 rows in set (0.00 sec)

값별 출현 횟수 카운트하기

이제 특정 값(Marks 점수)이 열에 몇 번 나타나는지 세는 쿼리입니다. COUNT(*)에 별칭(Alias)을 지정하면 결과를 더 읽기 쉽게 확인할 수 있습니다.

mysql> SELECT Marks, COUNT(*) AS Total
FROM CountSameValue
GROUP BY Marks;

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

+-------+-------+
| Marks | Total |
+-------+-------+
| 67    | 3     |
| 87    | 2     |
| 71    | 2     |
| 66    | 1     |
+-------+-------+
4 rows in set (0.00 sec)

결과 해석

위 출력 결과를 보면 다음과 같은 정보를 알 수 있습니다.

  • 67점: 3명(Sam, Carol, Maria)이 받았습니다.
  • 87점: 2명(Mike, Bob)이 받았습니다.
  • 71점: 2명(John, David)이 받았습니다.
  • 66점: 1명(Adam)만 받았습니다.

이처럼 GROUP BY와 COUNT(*)를 조합하면 별도의 복잡한 로직 없이 간단한 쿼리 한 번으로 특정 열 내 값의 빈도수를 손쉽게 집계할 수 있습니다. 데이터 분석이나 통계 조회 시 매우 유용하게 활용되는 기본 패턴이니 꼭 기억해 두시기 바랍니다.