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

MySQL GROUP BY와 SUM으로 특정 기준별 값 그룹화 및 합산하는 방법

MySQL에서 레코드를 특정 기준에 따라 묶고 싶을 때는 GROUP BY 절을 사용하고, 각 그룹의 값을 더할 때는 SUM() 함수를 사용합니다. 이 글에서는 과목(Subject)별로 점수(Marks)를 그룹화하고 합산하는 방법을 예제와 함께 단계별로 살펴보겠습니다.

1. 예제 테이블 생성

먼저 학생 이름(Name), 과목(Subject), 점수(Marks)를 저장할 테이블을 생성합니다.

mysql> create table DemoTable
(
    Name varchar(40),
    Subject varchar(40),
    Marks int
);
Query OK, 0 rows affected (2.89 sec)

2. 샘플 데이터 삽입

INSERT 명령을 사용해 테이블에 여러 개의 레코드를 추가합니다.

mysql> insert into DemoTable values('Chris','MySQL',76);
Query OK, 1 row affected (0.32 sec)
mysql> insert into DemoTable values('Sam','MongoDB',86);
Query OK, 1 row affected (0.39 sec)
mysql> insert into DemoTable values('Mike','MySQL',98);
Query OK, 1 row affected (0.46 sec)
mysql> insert into DemoTable values('David','Java',93);
Query OK, 1 row affected (0.32 sec)
mysql> insert into DemoTable values('Bob','MySQL',57);
Query OK, 1 row affected (0.17 sec)
mysql> insert into DemoTable values('John','MongoDB',77);
Query OK, 1 row affected (0.17 sec)

3. 전체 데이터 조회

SELECT 문을 사용해 테이블의 모든 레코드를 확인합니다.

mysql> select *from DemoTable;

위 쿼리를 실행하면 다음과 같은 결과가 출력됩니다.

+-------+---------+-------+
| Name  | Subject | Marks |
+-------+---------+-------+
| Chris | MySQL   |    76 |
| Sam   | MongoDB |    86 |
| Mike  | MySQL   |    98 |
| David | Java    |    93 |
| Bob   | MySQL   |    57 |
| John  | MongoDB |    77 |
+-------+---------+-------+
6 rows in set (0.00 sec)

4. 과목별 점수 합계 구하기

이제 GROUP BY 절로 과목(Subject)을 기준으로 레코드를 그룹화한 뒤, SUM() 함수로 각 그룹의 점수 합계를 계산합니다.

mysql> select Subject,SUM(Marks) from DemoTable group by Subject;

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

+---------+------------+
| Subject | SUM(Marks) |
+---------+------------+
| MySQL   |        231 |
| MongoDB |        163 |
| Java    |         93 |
+---------+------------+
3 rows in set (0.00 sec)

결과 해석

출력 결과를 보면 MySQL 과목은 76 + 98 + 57 = 231점, MongoDB 과목은 86 + 77 = 163점, Java 과목은 93점으로 집계된 것을 확인할 수 있습니다. 이처럼 GROUP BY와 SUM()을 함께 사용하면 카테고리별 통계를 손쉽게 산출할 수 있으며, 매출 집계, 로그 분석 등 다양한 실무 상황에서 활용됩니다.