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

MySQL에서 특정 정수가 다른 열의 값에 대응하여 열에 나타나는 횟수 세는 방법

개요

MySQL에서 특정 정수가 한 열에 몇 번 나타나는지, 그리고 그 값이 다른 열의 해당 값과 어떻게 연관되는지 확인하고 싶다면 COUNT() 집계 함수를 사용하면 됩니다. COUNT() 함수는 조건에 맞는 행의 개수를 손쉽게 집계해 주며, GROUP BY 절과 함께 사용하면 그룹별 통계도 구할 수 있습니다.

이번 글에서는 예제 테이블을 만들고, Value1 열에서 100이라는 값이 Value2 열의 각 값에 대해 몇 번 등장하는지 계산하는 쿼리를 단계별로 살펴보겠습니다.

1. 테이블 생성하기

먼저 두 개의 정수형 열을 가진 테이블을 생성합니다.

mysql> create table DemoTable650 (Value1 int, Value2 int);
Query OK, 0 rows affected (0.83 sec)

2. 데이터 삽입하기

INSERT 명령을 사용하여 샘플 데이터를 입력합니다. 이때 Value1이 100인 레코드를 네 개, 200인 레코드를 하나 추가합니다.

mysql> insert into DemoTable650 values(100,500);
Query OK, 1 row affected (0.17 sec)
mysql> insert into DemoTable650 values(100,500);
Query OK, 1 row affected (0.10 sec)
mysql> insert into DemoTable650 values(100,500);
Query OK, 1 row affected (0.14 sec)
mysql> insert into DemoTable650 values(100,500);
Query OK, 1 row affected (0.23 sec)
mysql> insert into DemoTable650 values(200,500);
Query OK, 1 row affected (0.12 sec)

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

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

mysql> select *from DemoTable650;

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

+--------+--------+
| Value1 | Value2 |
+--------+--------+
| 100    |    500 |
| 100    |    500 |
| 100    |    500 |
| 100    |    500 |
| 200    |    500 |
+--------+--------+
5 rows in set (0.00 sec)

4. COUNT()로 특정 값의 등장 횟수 세기

이제 핵심 쿼리입니다. WHERE 절로 Value1이 100인 행만 필터링한 뒤, GROUP BY 절을 사용해 Value2 값별로 COUNT(Value1)를 집계하면 원하는 결과를 얻을 수 있습니다.

mysql> select Value2, count(Value1) from DemoTable650 where Value1=100 group by Value2;

위 쿼리의 실행 결과는 다음과 같습니다.

+--------+---------------+
| Value2 | count(Value1) |
+--------+---------------+
| 500    |             4 |
+--------+---------------+
1 row in set (0.04 sec)

결과 해석

출력 결과를 보면 Value2가 500일 때 Value1이 100인 레코드가 총 4개 존재함을 알 수 있습니다. 즉, Value1 = 100이라는 조건을 만족하는 행들이 Value2 = 500 그룹에 네 번 나타난 것입니다.

마무리

이처럼 COUNT() 함수와 GROUP BY 절을 조합하면 특정 값이 다른 열의 값에 대응하여 몇 번 나타나는지 간단하게 계산할 수 있습니다. WHERE 절의 조건이나 GROUP BY 기준 열을 변경하면 다양한 형태의 집계 분석에도 활용할 수 있으니, 실무 데이터 분석 시 적극적으로 응용해 보시기 바랍니다.