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

MySQL에서 고유 값별 발생 횟수를 계산해 새 열로 표시하는 쿼리 방법

개요

MySQL에서 특정 열에 저장된 값들이 각각 몇 번 나타나는지(발생 횟수) 집계하고, 그 결과를 새로운 열 형태로 확인하는 방법을 소개합니다. 이 작업은 GROUP BY 절과 COUNT() 집계 함수를 함께 사용하면 간단하게 처리할 수 있습니다.

1. 테이블 생성하기

먼저 실습에 사용할 테이블을 생성하겠습니다.

mysql> create table DemoTable
(
    Value int
);
Query OK, 0 rows affected (0.57 sec)

2. 샘플 데이터 삽입하기

INSERT 명령을 사용해 몇 개의 레코드를 입력합니다. 집계 결과를 확인하기 위해 일부러 중복된 값도 포함시켰습니다.

mysql> insert into DemoTable values(80);
Query OK, 1 row affected (0.12 sec)
mysql> insert into DemoTable values(90);
Query OK, 1 row affected (0.12 sec)
mysql> insert into DemoTable values(90);
Query OK, 1 row affected (0.10 sec)
mysql> insert into DemoTable values(80);
Query OK, 1 row affected (0.10 sec)
mysql> insert into DemoTable values(100);
Query OK, 1 row affected (0.11 sec)
mysql> insert into DemoTable values(90);
Query OK, 1 row affected (0.12 sec)

3. 전체 데이터 확인하기

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

mysql> select *from DemoTable;

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

+-------+
| Value |
+-------+
|    80 |
|    90 |
|    90 |
|    80 |
|   100 |
|    90 |
+-------+
6 rows in set (0.00 sec)

4. 고유 값별 발생 횟수 계산하기

이제 GROUP BY 절로 값을 그룹화한 뒤 COUNT(*)로 각 그룹의 건수를 세면, 고유 값별 발생 횟수를 구할 수 있습니다.

mysql> select Value,count(*) from DemoTable group by Value;

결과를 보면 각 값 옆의 새로운 열(count(*))에 발생 횟수가 표시됩니다.

+-------+----------+
| Value | count(*) |
+-------+----------+
|    80 |        2 |
|    90 |        3 |
|   100 |        1 |
+-------+----------+
3 rows in set (0.00 sec)

정리

위 결과에서 알 수 있듯이 80은 2번, 90은 3번, 100은 1번 나타났습니다. 이처럼 GROUP BYCOUNT()를 조합하면 별도의 서브쿼리나 애플리케이션 로직 없이도 데이터 분포를 손쉽게 파악할 수 있습니다. 참고로 결과 열 이름을 더 직관적으로 바꾸고 싶다면 count(*) AS OccurrenceCount처럼 별칭(Alias)을 지정하는 것도 좋은 방법입니다.