MySQL 쿼리에서 백분율 계산 후 결과 반올림하기
MySQL에서 두 값의 비율을 백분율(%) 형태로 표시하고 싶다면 CONCAT() 함수와 ROUND() 함수를 함께 사용하면 됩니다. ROUND()로 계산 결과를 원하는 자릿수까지 반올림한 뒤, CONCAT()으로 '%' 기호를 붙여주는 방식입니다.
먼저 예제에 사용할 테이블을 생성해 보겠습니다.
mysql> create table DemoTable1844
(
Number int,
TotalNumber int
);
Query OK, 0 rows affected (0.00 sec)
INSERT 명령을 사용해 몇 개의 레코드를 삽입합니다.
mysql> insert into DemoTable1844 values(50,500);
Query OK, 1 row affected (0.00 sec)
mysql> insert into DemoTable1844 values(80,500);
Query OK, 1 row affected (0.00 sec)
mysql> insert into DemoTable1844 values(98,500);
Query OK, 1 row affected (0.00 sec)
mysql> insert into DemoTable1844 values(45,500);
Query OK, 1 row affected (0.00 sec)
SELECT 문으로 테이블의 모든 레코드를 확인합니다.
mysql> select * from DemoTable1844;
실행 결과는 다음과 같습니다.
+--------+-------------+
| Number | TotalNumber |
+--------+-------------+
| 50 | 500 |
| 80 | 500 |
| 98 | 500 |
| 45 | 500 |
+--------+-------------+
4 rows in set (0.00 sec)
백분율 계산 및 반올림 쿼리
이제 Number 값을 TotalNumber로 나눈 뒤 100을 곱해 백분율을 구하고, 소수점 둘째 자리까지 반올림하여 '%' 기호와 함께 출력하는 쿼리입니다.
mysql> select concat(round(((Number / TotalNumber) * 100 ),2), '%') as Result from DemoTable1844;
위 쿼리를 실행하면 다음과 같은 결과가 출력됩니다.
+--------+
| Result |
+--------+
| 10.00% |
| 16.00% |
| 19.60% |
| 9.00% |
+--------+
4 rows in set (0.00 sec)
쿼리 동작 방식 설명
- (Number / TotalNumber) * 100: 비율에 100을 곱해 백분율 수치를 계산합니다.
- ROUND(..., 2): 계산된 값을 소수점 둘째 자리까지 반올림합니다. 필요에 따라 자릿수를 조절할 수 있습니다.
- CONCAT(..., '%'): 반올림된 숫자 뒤에 '%' 문자열을 연결해 최종 결과를 만듭니다.
이처럼 CONCAT()과 ROUND()만 활용하면 별도의 애플리케이션 로직 없이 MySQL 쿼리 안에서 바로 백분율을 깔끔하게 출력할 수 있습니다.