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

MySQL에서 특정 레코드를 제외하고 나머지 값의 합계 구하는 방법

MySQL에서 데이터를 집계할 때 특정 조건에 해당하는 레코드는 제외하고, 나머지 레코드의 숫자 값만 합산해야 하는 경우가 자주 있습니다. 이때 SUM() 함수와 WHERE 절을 함께 사용하면 간단하게 해결할 수 있습니다.

1. 테이블 생성하기

먼저 예제로 사용할 테이블을 생성합니다.

mysql> create table DemoTable
-> (
-> Name varchar(20),
-> Amount int
-> );
Query OK, 0 rows affected (0.61 sec)

2. 레코드 삽입하기

INSERT 명령을 사용해 테이블에 몇 개의 레코드를 삽입합니다.

mysql> insert into DemoTable values('John',200);
Query OK, 1 row affected (0.17 sec)
mysql> insert into DemoTable values('Chris',150);
Query OK, 1 row affected (0.18 sec)
mysql> insert into DemoTable values('Mike',500);
Query OK, 1 row affected (0.19 sec)
mysql> insert into DemoTable values('John',350);
Query OK, 1 row affected (0.18 sec)

3. 전체 레코드 확인하기

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

mysql> select * from DemoTable;

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

+-------+--------+
| Name  | Amount |
+-------+--------+
| John  | 200    |
| Chris | 150    |
| Mike  | 500    |
| John  | 350    |
+-------+--------+
4 rows in set (0.00 sec)

4. 특정 레코드를 제외한 합계 구하기

여기서 'John'이라는 이름의 레코드는 모두 무시하고, 나머지 레코드의 Amount 값을 합산하고 싶다고 가정해 보겠습니다. WHERE 절에서 Name != 'John' 조건을 지정하면 해당 레코드를 제외한 나머지 값만 합산할 수 있습니다.

mysql> select sum(Amount) from DemoTable
-> where Name!='John';

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

+-------------+
| sum(Amount) |
+-------------+
|         650 |
+-------------+
1 row in set (0.00 sec)

결과 분석

'John'의 레코드(200 + 350 = 550)가 제외되고, 남은 'Chris'(150)와 'Mike'(500)의 합계인 650이 반환된 것을 확인할 수 있습니다.

참고: NOT 연산자 활용

조건을 더 명확하게 표현하고 싶다면 != 대신 <> 연산자나 NOT 키워드를 사용할 수도 있습니다.

mysql> select sum(Amount) from DemoTable where NOT Name='John';

두 방식 모두 동일한 결과를 반환하므로, 상황에 맞게 편리한 방법을 선택하면 됩니다.