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

MySQL에서 여러 열(Column)에 걸쳐 특정 값 개수 세는 방법

MySQL에서 여러 열에 걸쳐 특정 값이 몇 번 등장하는지 개수를 구하려면 CASE 문과 SUM() 함수를 함께 사용하면 됩니다. 각 열마다 조건을 만족하면 1, 그렇지 않으면 0을 반환하도록 하고, 이를 모두 더하면 전체 개수를 손쉽게 계산할 수 있습니다.

1. 샘플 테이블 생성하기

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

mysql> create table countValueMultipleColumnsDemo
-> (
-> Value1 int,
-> Value2 int,
-> Value3 int
-> );
Query OK, 0 rows affected (0.62 sec)

2. 데이터 삽입하기

다음은 INSERT 명령어를 사용해 테이블에 레코드를 추가하는 쿼리입니다.

mysql> insert into countValueMultipleColumnsDemo values(10,15,10);
Query OK, 1 row affected (0.15 sec)

mysql> insert into countValueMultipleColumnsDemo values(20,30,10);
Query OK, 1 row affected (0.14 sec)

mysql> insert into countValueMultipleColumnsDemo values(40,10,60);
Query OK, 1 row affected (0.18 sec)

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

SELECT 명령어로 테이블의 전체 레코드를 조회합니다.

mysql> select *from countValueMultipleColumnsDemo;

위 쿼리는 다음과 같은 결과를 출력합니다.

+--------+--------+--------+
| Value1 | Value2 | Value3 |
+--------+--------+--------+
| 10 | 15 | 10 |
| 20 | 30 | 10 |
| 40 | 10 | 60 |
+--------+--------+--------+
3 rows in set (0.00 sec)

4. 여러 열에서 특정 값(10)의 개수 구하기

이제 세 개의 열(Value1, Value2, Value3)에서 값 10이 등장하는 횟수를 한 번의 쿼리로 계산해 보겠습니다.

mysql> SELECT (SUM(CASE WHEN Value1 = 10 THEN 1 ELSE 0 END) +
-> SUM(CASE WHEN Value2 = 10 THEN 1 ELSE 0 END) +
-> SUM(CASE WHEN Value3 = 10 THEN 1 ELSE 0 END)) TOTAL_COUNT
-> from countValueMultipleColumnsDemo;

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

+-------------+
| TOTAL_COUNT |
+-------------+
| 4 |
+-------------+
1 row in set (0.00 sec)

결과 해석

출력된 TOTAL_COUNT 값은 4입니다. 이는 Value1 열에서 1번, Value2 열에서 1번, Value3 열에서 2번, 즉 세 열을 합쳐 값 10이 총 4번 나타났다는 의미입니다.

이처럼 CASE WHEN ... THEN 1 ELSE 0 END 패턴을 열의 수만큼 반복하고 SUM()으로 합산하면, 행 단위가 아닌 열 단위로 흩어진 값들의 총 개수를 하나의 쿼리로 간편하게 집계할 수 있습니다.