MySQL에서는 CONCAT() 함수와 ROUND() 함수를 조합하면 점수 데이터를 기반으로 학생의 백분율을 손쉽게 계산할 수 있으며, 결과값에 백분율 기호(%)까지 함께 붙여서 출력할 수 있습니다. 아래에서 단계별로 살펴보겠습니다.
1. 테이블 생성
먼저 점수를 저장할 테이블을 생성합니다.
mysql> create table DemoTable
(
Marks int
);
Query OK, 0 rows affected (0.62 sec)2. 샘플 데이터 삽입
INSERT 명령을 사용하여 테이블에 학생별 점수 레코드를 입력합니다.
mysql> insert into DemoTable values(88); Query OK, 1 row affected (0.17 sec) mysql> insert into DemoTable values(65); Query OK, 1 row affected (0.15 sec) mysql> insert into DemoTable values(98); Query OK, 1 row affected (0.14 sec) mysql> insert into DemoTable values(45); Query OK, 1 row affected (0.10 sec) mysql> insert into DemoTable values(67); Query OK, 1 row affected (0.33 sec)
3. 전체 레코드 조회
SELECT 문으로 테이블에 저장된 모든 레코드를 확인합니다.
mysql> select *from DemoTable;
실행 결과는 다음과 같습니다.
+-------+ | Marks | +-------+ | 88 | | 65 | | 98 | | 45 | | 67 | +-------+ 5 rows in set (0.00 sec)
4. 백분율 계산 쿼리 실행
다음은 5개 과목의 점수를 기준으로 학생의 백분율을 계산하는 쿼리입니다. 총점 500점 대비 백분율을 구한 뒤, CONCAT() 함수로 결과 뒤에 백분율 기호(%)를 붙여 출력합니다.
mysql> select concat(round(SUM(Marks)*100/500),'%') from DemoTable;
실행 결과는 다음과 같습니다.
+---------------------------------------+ | concat(round(SUM(Marks)*100/500),'%') | +---------------------------------------+ | 73% | +---------------------------------------+ 1 row in set (0.00 sec)
쿼리 설명
- SUM(Marks): 모든 과목의 점수를 합산합니다. 위 예제에서는 88 + 65 + 98 + 45 + 67 = 363점입니다.
- *100/500: 총점 500점을 기준으로 백분율로 변환합니다. (363 × 100 ÷ 500 = 72.6)
- ROUND(): 소수점 이하를 반올림하여 정수 형태로 만듭니다. (72.6 → 73)
- CONCAT(..., '%'): 계산된 숫자 뒤에 '%' 문자열을 연결하여 최종적으로 '73%'라는 형식으로 출력합니다.
이처럼 CONCAT() 함수를 활용하면 숫자 계산 결과와 문자열을 자유롭게 결합할 수 있어, 보고서나 화면 출력용 데이터를 만들 때 매우 유용합니다.