소수점을 제거한 레코드 합계 구하기
테이블에 저장된 값에서 소수점(.)을 제거한 뒤 전체 합계를 계산하려면 MySQL의 집계 함수 SUM()과 문자열 치환 함수 REPLACE()를 함께 사용하면 됩니다. REPLACE()로 각 레코드에서 마침표를 제거한 후, 그 결과를 SUM()으로 더하는 방식입니다.
먼저 예제에 사용할 테이블을 생성해 보겠습니다.
mysql> create table DemoTable857(Price varchar(100));
Query OK, 0 rows affected (1.40 sec)
샘플 데이터 삽입
insert 명령을 사용해 몇 개의 레코드를 삽입합니다.
mysql> insert into DemoTable857 values('50.60');
Query OK, 1 row affected (0.18 sec)
mysql> insert into DemoTable857 values('40.30.20');
Query OK, 1 row affected (0.47 sec)
mysql> insert into DemoTable857 values('10.20');
Query OK, 1 row affected (0.69 sec)저장된 레코드 확인
select 문으로 테이블의 모든 레코드를 조회합니다.
mysql> select *from DemoTable857;
위 쿼리는 다음과 같은 결과를 출력합니다.
+----------+
| Price |
+----------+
| 50.60 |
| 40.30.20 |
| 10.20 |
+----------+
3 rows in set (0.00 sec)
소수점 제거 후 합계 계산하기
다음은 REPLACE() 함수로 Price 컬럼의 소수점을 모두 제거하고, SUM() 함수로 합계를 구하는 쿼리입니다.
mysql> select sum(replace(Price,'.','')) AS SumOfALl from DemoTable857;
실행하면 아래와 같은 결과가 출력됩니다.
+----------+
| SumOfALl |
+----------+
| 409100 |
+----------+
1 row in set (0.03 sec)
결과 분석
REPLACE(Price, '.', '')는 각 값에서 마침표를 빈 문자열로 치환합니다. 즉, '50.60'은 5060, '40.30.20'은 403020, '10.20'은 1020으로 변환됩니다. 이 세 값을 SUM()으로 더하면 5060 + 403020 + 1020 = 409100이라는 최종 합계가 도출됩니다.
참고로 Price 컬럼은 varchar 타입이므로 REPLACE() 함수를 바로 적용할 수 있으며, 치환된 결과는 숫자 컨텍스트에서 자동으로 수치로 변환되어 합산됩니다.