mssql 소수점 계산 쿼리 질문드립니다. 0 2 2,309

by 초보자 [SQL Query] [2023.02.17 16:18:21]


   A    |      B
   -----|--------
   31567|4748100
   30257|15436740

계산식 => A*100/B (소수점 둘째자리까지 나타냄, 셋째짜리에서 반올림)

1.
31567 * 100 / 4748100 => 0.6648343547945494 => 0.66

2.
30257 * 100 / 15436740 => 0.1960064106799752 => 0.2 이지만 0.2 로 표현해야함


:: TRY_CONVERT(VARCHAR, ROUND(TRY_CONVERT(FLOAT, A) * 100 / TRY_CONVERT(FLOAT, B), 2))
이렇게 작성을 했었는데, 2번이 0.20가 아니라 0.2로 나와서요... 0.20이 나올수 있도록 할 수 있을까요??

by pajama [2023.02.17 22:28:23]

뭔가 간결한 방법이 있을듯도 한데요..

with t (a,b) as (
select   31567, 4748100  union all
select   30257, 15436740 
)
select cast(cast(round(cast(a as float)*100/b,2) as decimal(5,2)) as char(5))
from t

 


by 마농 [2023.02.20 14:48:13]
WITH t AS
(
SELECT 31567 a, 4748100 b
UNION ALL SELECT 30257, 15436740
)
SELECT a, b
     , CAST(a * 100. / b AS DECIMAL(5, 2)) c
     , CONVERT(DECIMAL(5, 2), a * 100. / b) d
  FROM t
;

 

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입