학생별 점수를 그룹화하려면 MySQL의 GROUP BY 절을 사용하고, 점수의 합계를 계산하려면 SUM() 함수를 사용합니다. 이 글에서는 실제 예제를 통해 학생 이름별로 점수를 묶고 각 학생의 총점을 한 번에 조회하는 방법을 단계별로 살펴보겠습니다.
1. 예제 테이블 생성하기
먼저 학생 이름과 점수를 저장할 테이블을 생성합니다.
mysql> create table DemoTable1920 ( StudentName varchar(20), StudentMarks int ); Query OK, 0 rows affected (0.00 sec)
2. 샘플 데이터 삽입하기
INSERT 명령을 사용해 테이블에 몇 개의 레코드를 추가합니다. 같은 학생이 여러 번 시험을 본 상황을 가정해 'Chris'와 'David'의 점수를 여러 개 넣어 보겠습니다.
mysql> insert into DemoTable1920 values('Chris',67);
Query OK, 1 row affected (0.00 sec)
mysql> insert into DemoTable1920 values('David',97);
Query OK, 1 row affected (0.00 sec)
mysql> insert into DemoTable1920 values('Chris',57);
Query OK, 1 row affected (0.00 sec)
mysql> insert into DemoTable1920 values('David',45);
Query OK, 1 row affected (0.00 sec)
mysql> insert into DemoTable1920 values('Chris',89);
Query OK, 1 row affected (0.00 sec)
3. 전체 레코드 확인하기
SELECT 문으로 테이블에 저장된 모든 데이터를 조회해 보겠습니다.
mysql> select * from DemoTable1920;
실행 결과는 다음과 같습니다.
+-------------+--------------+ | StudentName | StudentMarks | +-------------+--------------+ | Chris | 67 | | David | 97 | | Chris | 57 | | David | 45 | | Chris | 89 | +-------------+--------------+ 5 rows in set (0.00 sec)
4. GROUP BY와 SUM()으로 학생별 총점 구하기
이제 특정 학생의 점수들을 그룹화하고 합산하는 쿼리입니다. GROUP BY StudentName으로 학생 이름 기준으로 행을 묶은 뒤, SUM(StudentMarks)로 각 그룹의 점수 합계를 계산합니다. AS 키워드를 사용해 결과 열의 이름을 TotalMarks(총점)로 지정했습니다.
mysql> select StudentName,SUM(StudentMarks) as TotalMarks from DemoTable1920 group by StudentName;
실행 결과는 다음과 같습니다.
+-------------+------------+ | StudentName | TotalMarks | +-------------+------------+ | Chris | 213 | | David | 142 | +-------------+------------+ 2 rows in set (0.00 sec)
결과 해석
- Chris: 67 + 57 + 89 = 213점
- David: 97 + 45 = 142점
이처럼 GROUP BY와 SUM() 함수를 함께 사용하면 중복된 학생 데이터를 하나의 행으로 그룹화하고, 각 학생의 총점을 별도의 열로 깔끔하게 표시할 수 있습니다. 이 기법은 성적 관리뿐 아니라 매출 집계, 로그 분석 등 다양한 데이터 요약 작업에도 동일하게 활용할 수 있습니다.