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

MySQL 데이터베이스에서 행 방향(가로) 값 개수를 계산하는 방법

MySQL에서는 집계 함수 COUNT()를 활용하면 테이블의 한 행에 있는 여러 컬럼 값을 가로 방향으로 세어 합산할 수 있습니다. 이 글에서는 예제 테이블을 만들고, 각 컬럼에서 조건을 만족하는 값의 개수를 구하는 방법을 단계별로 살펴보겠습니다.

1. 예제 테이블 생성

먼저 정수형 컬럼 네 개를 가진 테이블을 생성합니다.

mysql> create table DemoTable
(
    Id int NOT NULL AUTO_INCREMENT PRIMARY KEY,
    FirstValue int,
    SecondValue int,
    ThirdValue int,
    FourthValue int
);
Query OK, 0 rows affected (0.59 sec)

2. 샘플 데이터 삽입

INSERT 명령을 사용해 두 개의 레코드를 추가합니다.

mysql> insert into DemoTable(FirstValue,SecondValue,ThirdValue,FourthValue) values(-18,45,0,155);
Query OK, 1 row affected (0.22 sec)
mysql> insert into DemoTable(FirstValue,SecondValue,ThirdValue,FourthValue) values(0,235,null,15);
Query OK, 1 row affected (0.20 sec)

3. 저장된 데이터 확인

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

mysql> select *from DemoTable;

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

+----+------------+-------------+------------+-------------+
| Id | FirstValue | SecondValue | ThirdValue | FourthValue |
+----+------------+-------------+------------+-------------+
| 1  | -18        | 45          | 0          | 155         |
| 2  | 0          | 235         | NULL       | 15          |
+----+------------+-------------+------------+-------------+
2 rows in set (0.00 sec)

4. 가로 방향 값 개수 계산하기

이제 각 컬럼에서 0보다 큰 값이 몇 개인지 가로 방향으로 집계하는 쿼리입니다.

mysql> SELECT
   COUNT(FirstValue > 0 OR NULL) +
   COUNT(SecondValue > 0 OR NULL) +
   COUNT(ThirdValue > 0 OR NULL) +
   COUNT(FourthValue > 0 OR NULL) AS TOTAL_VALUE
FROM DemoTable;

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

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

동작 원리

이 쿼리가 작동하는 이유는 MySQL의 COUNT() 함수가 NULL이 아닌 값만 세기 때문입니다. 조건식 FirstValue > 0 OR NULL은 조건이 참일 때 1을 반환하고, 거짓일 때 NULL을 반환합니다. 따라서 COUNT()는 조건을 만족하는 값만 카운트하게 됩니다.

위 예제에서는 첫 번째 행의 45, 155와 두 번째 행의 235, 15, 즉 총 4개의 값이 0보다 크므로 결과로 4가 반환됩니다. 음수(-18), 0, NULL 값은 모두 제외됩니다.

이 패턴은 SUM(CASE WHEN ... THEN 1 ELSE 0 END)을 사용하는 대안보다 코드가 간결하며, 여러 컬럼의 조건부 개수를 하나의 쿼리에서 손쉽게 합산할 때 유용하게 활용할 수 있습니다.