숫자를 거듭제곱 으로 표현하는건 ... 0 3 91

by 오지현 [2018.01.09 17:00:52]


 

power 함수를 통해서 POWER(10,2)  이럴경우 10의 2승으로 계산해서 100 으로 나오는건 아는데...

100을 10의2승으로 표현하려면 이건 어떻게 해야할까요?

 

분석 DATA관련 DATA를 입력받아서 결과치를 판명해줘야하는데

10의7승에서 10의9승 사이의 값 3개를 받아서 평균치를 넣어주고, 그 평균치를 가지고 이 범위를 벗어나면 FALSE 라고 찍어줘야하는데

이걸 어떻게 해야할까요?  ㅠㅠ

엑셀에서는 이렇게 표현하더라구요

측정결과 합/부
1 2 3 Avg.
5E+07 1E+07 4E+07 3.3E+07 PASSED

도저히 모르겠네요

 

by 마농 [2018.01.09 17:40:57]

엑셀 지수 표현식 그대로 사용 가능합니다.
단, 출력을 지수 표현식처럼 하고 싶으면 to_char 로 바꿔 주셔야 합니다.

WITH t AS
(
SELECT 5E+07 v1
     , 1E+07 v2
     , 4E+07 v3
  FROM dual
)
SELECT REPLACE(TO_CHAR(v1, 'fm0.9EEEE'), '.E', 'E') v1
     , REPLACE(TO_CHAR(v2, 'fm0.9EEEE'), '.E', 'E') v2
     , REPLACE(TO_CHAR(v3, 'fm0.9EEEE'), '.E', 'E') v3
     , REPLACE(TO_CHAR((v1 + v2 + v3) / 3, 'fm0.9EEEE'), '.E', 'E') v_avg
     , CASE WHEN (v1 + v2 + v3) / 3 BETWEEN 1E7 AND 1E9 THEN 'PASSED' ELSE 'FALSE' END passed
  FROM t
;

 


by 오지현 [2018.01.09 22:00:13]

혹시,, sql로도 표현해주실수 있을까요?? 둘다 써야할거 같아서요..  정말 감사합니다.

sql은 CAST나 CONVERT 로 변환해서 하면 될거 같은데 뒤에 fm0.9EEEE 이부분을 잘모르겠어요 ㅠ


by 마농 [2018.01.10 10:28:39]
-- MSSQL --
WITH t AS
(
SELECT 5E+07 v1
     , 1E+07 v2
     , 4E+07 v3
)
SELECT REPLACE(CAST(CAST(v1 AS FLOAT) AS VARCHAR), 'e+0', 'E+') v1
     , REPLACE(CAST(CAST(v2 AS FLOAT) AS VARCHAR), 'e+0', 'E+') v2
     , REPLACE(CAST(CAST(v3 AS FLOAT) AS VARCHAR), 'e+0', 'E+') v3
     , REPLACE(CAST(CAST( ROUND( (v1 + v2 + v3) / 3
                        , FLOOR(LOG10((v1 + v2 + v3) / 3)) * -1 + 1
                        ) AS FLOAT) AS VARCHAR), 'e+0', 'E+') v_avg
     , CASE WHEN (v1 + v2 + v3) / 3 BETWEEN 1E7 AND 1E9 THEN 'PASSED' ELSE 'FALSE' END passed
  FROM t
;

 

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