본문 바로가기
Develop/Database

[MSSQL] 평균 값 구할 때, 소수점 자리까지 구하는 방법

by 코딩의성지 2022. 2. 1.

하이.

 

최근에 이직하게 된 회사에서 주로 사용하는 RDBMS 가 SQL SERVER이다.

그래서 MSSQL 을 좀 다루는 연습히 필요해 MSSQL을 이용해 여러가지 쿼리 짜는걸 공부하고 있다.

(다행스럽게 이전에 사용하던 Oracle과는 크게 차이가 없어보였다.)

 

오늘은 평균값을 구할때, 조심해야할 것을 포스팅해보려고한다.

아래 쿼리를 보자.

 

SELECT AVG(amount) AS [평균 구매 갯수] FROM BuyTbl;

원래 기대한 값은 2.9XXXXX 이나 실제 값은 아래 처럼 나왔다.

평균 값을 구할때 그냥 구하면, 소수점 자리를 아예 무시해버리고 값을 구하게 된다.

이렇게 구하면 평균값이 의미가 없어지게 될 수 도 있다.

 

 

그래서 평균값을 구하는 두가지 방법을 말씀드리려 한다.

 

1. CAST 이용하기

CAST는 말그대로 캐스팅해주는 함수 이다. 이 함수를 이용하여 정수값을 실수로 캐스팅해서 평균을 구해준다.

 

아래 쿼리를 보자.

SELECT AVG(CAST(amount AS DECIMAL(10,6))) AS [평균 구매 갯수] FROM BuyTbl;

이렇게 구하면 결과는 2.916666으로 아래처럼 잘 나온다.

 

2. 1.0 곱해주기

평균을 구하고자하는 정수인 컬럼에 1.0을 곱해서 해당 컬럼 숫자 자체를 실수로 만든 뒤에 평균을 구하는 방식이다.

약간 꼼수를 부려서 처리하는 방식인데 생각보다 실무에서 이런식으로 많이 처리한다. 

 

아래 쿼리를 보자.

SELECT AVG(amount*1.0) AS [평균 구매 갯수] FROM BuyTbl;

마찬가지로 결과를 살펴보면 2.916666으로 아래처럼 나온다.

 

소수점을 무시하고 평균값을 구하는게 사소해 보이지만, 이 사소한 실수가 매우 큰 장애상황을 유발할 수 있다.

이런 실수를 하지 않는 개발자가 좋은 개발자라고 생각한다.

 

두 가지 방법을 잘 이용하면, 앞으로 평균을 구할 때 소수점을 빼먹고 계산하는 실수는 없앨 수 있을 것이다. 잘 기억해두고 실무에서 평균을 구할때 잘 써먹도록 하자.

 

그럼 오늘 포스팅은 여기서 마치도록하겠다. 

 

끝.

 

반응형

댓글