2017-05-20 34 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