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

MySQL에서 REPLACE()와 SUM()으로 소수점을 제거하고 레코드 합계 구하기

소수점을 제거한 레코드 합계 구하기

테이블에 저장된 값에서 소수점(.)을 제거한 뒤 전체 합계를 계산하려면 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() 함수를 바로 적용할 수 있으며, 치환된 결과는 숫자 컨텍스트에서 자동으로 수치로 변환되어 합산됩니다.