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 |
도저히 모르겠네요
엑셀 지수 표현식 그대로 사용 가능합니다.
단, 출력을 지수 표현식처럼 하고 싶으면 to_char 로 바꿔 주셔야 합니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | 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 ; |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | -- 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 ; |
WITH t AS
(
SELECT '2000152001' chitemseq, '326' chitem1, '284' chitem2, '203' chitem3
UNION ALL SELECT '2000152002', '40', '70', '20'
UNION ALL SELECT '2000152003', '5.39E+07', '1.85E+08', '1.17E+08'
UNION ALL SELECT '2000152003', '4.00E+05', '8.01E+05', '4.82E+05'
UNION ALL SELECT '2000152003', '6.95E+05', '8.01E+05', '4.82E+05'
)
SELECT chitemseq
, chitem1, chitem2, chitem3
, x
, CASE chitemseq
WHEN '2000152001' THEN CAST(CAST(x AS NUMERIC(12, 1)) AS VARCHAR)
WHEN '2000152002' THEN CAST(CAST(x AS NUMERIC(12, 0)) AS VARCHAR)
WHEN '2000152003' THEN REPLACE(ROUND(x, -5), 'e+0', 'E+')
END z
FROM (SELECT chitemseq
, chitem1, chitem2, chitem3
, ( CAST(chitem1 AS FLOAT)
+ CAST(chitem2 AS FLOAT)
+ CAST(chitem3 AS FLOAT)
) / 3 AS x
FROM t
) a
;
이렇게 하니,, 일부값들이 그냥
600000, 700000 이렇게 값이 나옵니다. ㅠㅠ 이런경우는 어떻게 해야할까요?