2017-05-20 4 views
1

Microsoft Parallel Data Warehouse (PDW)에서 일부 데이터를 수집하는 쿼리를 작성하고 있습니다. 다음과 같이SQL : select 문에서 집계 함수에 대한 산술 연산이 잘못된 정보를 표시합니다.

쿼리의 일부이다 -

Select 

min(rows) as rows_min, 

max(rows) as rows_max, 

sum(rows) as rows_total, 

cast((((max(rows)-min(rows))/sum(rows))*100) as float) as SkewPct; 

from .....; 

은 분명히 쿼리가 오류를 표시하지 않습니다. 성공적으로 실행되지만 SkewPct를 제외한 모든 열의 올바른 데이터로 0 만 표시합니다.

이 문제를 해결하려면 저를 도우십시오.

+1

MySQL 또는 sql-server? –

답변

0

난 당신이 다음과 같이 분할 동안 1.0의 곱셈을 누락 생각 :

cast((((max(rows)-min(rows))/(sum(rows)*1.0))*100) as float) as SkewPct; 

나누기 MySQL의 documentation 당으로 플로트

+0

그게 효과가! 고마워 :)) – PyCodoop

0

로 변환하기 전에 일부를 제거 FLOAT 사용하려면 유효한 형식이 아닙니다 CAST, 당신은 TW 인수로 최대 숫자 (M)와 진수 (D)으로, 대신 DECIMAL을 사용해야합니다

DECIMAL 값을 생성합니다. 선택적 M 값과 D 값이 제공된 경우 최대 자릿수 (정밀도)와 소수점 이하의 자릿수 (배율)를 지정합니다 ( ).

기본적으로 값은 소수점 이하 자릿수가 int으로 반올림됩니다. 19.2237에서 두 번째 열 결과 반면 19에서

SELECT CAST((((127-23)/541)*100) as DECIMAL), CAST(19.2237 AS DECIMAL(7, 5)) 

첫 번째 열 결과 : 아래의 쿼리에서보세요.

여기는 SQL Fiddle입니다.

+0

음, 이미 시도해보십시오. 작동하지 않습니다. :( – PyCodoop