2017-05-20 33 views
1

我工作的一個查詢,收集微軟並行數據倉庫(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外,所有列中都有正確的數據。

請幫我解決這個問題!

+1

MySQL或SQL服務器? –

回答

0

我想你鴻溝在如下失蹤的1.0倍增:

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

把它轉換成浮動

+0

工作!謝謝:)) – PyCodoop

0

按MySQL的documentation之前移除部分,FLOAT不是有效的類型使用與CAST,您應該使用DECIMAL,而最大數字(M)和小數(D)作爲tw參數:

生成一個DECIMAL值。如果給出了可選M和d的值,它們 指定的位的最大數(精度)和小數點後面(比例)的 的位數。

默認情況下,值將被四捨五入爲int 0小數。看看下面的查詢:

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

第一列結果1919.2237第二列的結果。

這是SQL Fiddle

+0

那麼,已經嘗試過了。不起作用。 :( – PyCodoop