2017-05-20 12 views
1

Microsoft Parallel Data Warehouse(PDW)の一部のデータを収集するためのクエリを作成中です。SQL:選択ステートメントの集計関数の算術演算で間違った情報が表示される

次のようにクエリの一部は -

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.0の乗算が欠けていると思う

+1

MySQLまたはSQL Server? –

答えて

0

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

デバイドは、MySQL documentationFLOATを1としてフロート

+0

それはうまくいった!ありがとう:)) – PyCodoop

0

に変換する前に、一部を削除するには、使用するために有効なタイプではありませんCASTを使用する場合は、代わりにDECIMALを使用し、最大の桁数(M)と10進数(D)をtwの引数として使用する必要があります。

DECIMAL値を生成します。オプションのM値とD値が指定されている場合、 は、最大桁数(精度)と小数点以下の桁数(縮尺)を指定します。

デフォルトでは、値は小数点以下がに丸められます。 19.2237の2列目の結果に対し19

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

最初の列の結果:以下のクエリを見てみましょう。

ここにはSQL Fiddleです。

+0

まあ、それはすでに試してみました。動作しません。 :( – PyCodoop