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

MySQL에서 특정 행의 값만 합계(SUM) 구하는 방법

MySQL에서 특정 조건에 맞는 값만 합계 구하기

MySQL에서 테이블 전체가 아닌 특정 조건에 해당하는 행만 합계를 구하고 싶다면, WHERE 절로 조건을 지정한 뒤 집계 함수인 SUM()을 사용하면 됩니다. 이 글에서는 예제 테이블을 만들고, 특정 학생의 점수 합계를 구하는 과정을 단계별로 살펴보겠습니다.

1. 예제 테이블 생성

먼저 학생 이름과 점수를 저장할 테이블을 생성합니다.

mysql> create table DemoTable1370
    -> (
    -> StudentName varchar(20),
    -> Marks int
    -> );
Query OK, 0 rows affected (0.87 sec)

2. 샘플 데이터 삽입

INSERT 명령어를 사용해 테이블에 여러 학생의 점수 데이터를 입력합니다.

mysql> insert into DemoTable1370 values('Adam Smith',56);
Query OK, 1 row affected (0.20 sec)
mysql> insert into DemoTable1370 values('Chris Brown',67);
Query OK, 1 row affected (0.17 sec)
mysql> insert into DemoTable1370 values('Adam Smith',69);
Query OK, 1 row affected (0.20 sec)
mysql> insert into DemoTable1370 values('David Miller',98);
Query OK, 1 row affected (0.12 sec)
mysql> insert into DemoTable1370 values('John Smith',59);
Query OK, 1 row affected (0.13 sec)
mysql> insert into DemoTable1370 values('Adam Smith',79);
Query OK, 1 row affected (0.11 sec)
mysql> insert into DemoTable1370 values('Chris Brown',77);
Query OK, 1 row affected (0.17 sec)

3. 저장된 데이터 확인

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

mysql> select * from DemoTable1370;

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

+--------------+-------+
| StudentName  | Marks |
+--------------+-------+
| Adam Smith   |    56 |
| Chris Brown  |    67 |
| Adam Smith   |    69 |
| David Miller |    98 |
| John Smith   |    59 |
| Adam Smith   |    79 |
| Chris Brown  |    77 |
+--------------+-------+
7 rows in set (0.00 sec)

4. WHERE 절과 SUM()으로 특정 행만 합계 구하기

아래 쿼리는 'Adam Smith'라는 학생의 점수만 골라서 합계를 계산합니다. WHERE 절이 조건에 맞지 않는 행을 걸러내기 때문에, SUM() 함수는 해당 학생의 점수(56 + 69 + 79)만 더하게 됩니다.

mysql> select sum(Marks) AS Total from DemoTable1370 where StudentName='Adam Smith';

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

+-------+
| Total |
+-------+
|   204 |
+-------+
1 row in set (0.00 sec)

정리

MySQL에서 특정 행만 대상으로 합계를 구할 때는 WHERE 절 + SUM() 조합을 사용하면 됩니다. AS 키워드를 활용하면 결과 컬럼에 'Total'처럼 원하는 별칭을 붙일 수 있어 가독성도 좋아집니다. 여러 조건이 필요한 경우에는 AND 또는 OR 연산자를 함께 사용하면 됩니다.