MySQL에서 테이블의 여러 열에 대해 각각의 합계를 한 번의 쿼리로 구하고 싶다면 집계 함수인 SUM()을 사용하면 됩니다. 이 글에서는 예제 테이블을 생성하고 데이터를 삽입한 뒤, 각 열의 합계를 구하는 쿼리를 단계별로 살펴보겠습니다.
1. 예제 테이블 생성하기
먼저 세 개의 정수 열을 가진 테이블을 만듭니다. AUTO_INCREMENT가 적용된 Id 열을 기본 키로 설정했습니다.
mysql> create table DemoTable
(
Id int NOT NULL AUTO_INCREMENT PRIMARY KEY,
FirstValue int,
SecondValue int,
ThirdValue int
);
Query OK, 0 rows affected (0.57 sec)
2. 데이터 삽입하기
INSERT 명령을 사용해 테이블에 몇 개의 레코드를 추가합니다.
mysql> insert into DemoTable(FirstValue,SecondValue,ThirdValue) values(10,20,30);
Query OK, 1 row affected (0.22 sec)
mysql> insert into DemoTable(FirstValue,SecondValue,ThirdValue) values(60,50,40);
Query OK, 1 row affected (0.19 sec)
mysql> insert into DemoTable(FirstValue,SecondValue,ThirdValue) values(80,90,100);
Query OK, 1 row affected (0.23 sec)
mysql> insert into DemoTable(FirstValue,SecondValue,ThirdValue) values(20,10,0);
Query OK, 1 row affected (0.23 sec)
3. 저장된 데이터 확인하기
SELECT 문으로 테이블의 모든 레코드를 조회해 보겠습니다.
mysql> select *from DemoTable;
위 쿼리를 실행하면 다음과 같은 결과가 출력됩니다.
+----+------------+-------------+------------+
| Id | FirstValue | SecondValue | ThirdValue |
+----+------------+-------------+------------+
| 1 | 10 | 20 | 30 |
| 2 | 60 | 50 | 40 |
| 3 | 80 | 90 | 100 |
| 4 | 20 | 10 | 0 |
+----+------------+-------------+------------+
4 rows in set (0.00 sec)
4. 각 열의 합계 구하기
모든 열에 동일한 수의 값이 들어 있을 때 각 열의 합계를 구하는 쿼리는 다음과 같습니다. SUM() 함수 안에 합계를 구하고자 하는 열 이름을 넣고, SELECT 절에 필요한 만큼 반복해서 작성하면 됩니다.
mysql> select sum(FirstValue),sum(SecondValue),sum(ThirdValue) from DemoTable;
실행 결과는 다음과 같습니다.
+-----------------+------------------+-----------------+
| sum(FirstValue) | sum(SecondValue) | sum(ThirdValue) |
+-----------------+------------------+-----------------+
| 170 | 170 | 170 |
+-----------------+------------------+-----------------+
1 row in set (0.00 sec)
결과를 보면 FirstValue, SecondValue, ThirdValue 세 열 모두 170이라는 동일한 합계가 출력됩니다. 이처럼 SUM() 함수는 하나의 SELECT 문에서 여러 번 사용할 수 있으며, 별도의 쿼리를 여러 번 실행하지 않고도 여러 열의 합계를 동시에 계산할 수 있습니다.
알아두면 좋은 팁
SUM() 함수는 NULL 값을 자동으로 무시하므로, 특정 행의 값이 NULL이더라도 나머지 값들의 합계는 정상적으로 계산됩니다. 또한 조건에 맞는 행만 대상으로 합계를 구하고 싶다면 WHERE 절을 함께 사용하면 되고, GROUP BY 절과 조합하면 그룹별 합계도 손쉽게 구할 수 있습니다.