SQL:在select语句的集合函数算术运算显示错误信息
我工作的一个查询,收集微软并行数据仓库(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.0倍增:
cast((((max(rows)-min(rows))/(sum(rows)*1.0))*100) as float) as SkewPct;
把它转换成浮动
工作!谢谢:)) – PyCodoop
按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))
第一列结果19
而19.2237
第二列的结果。
这是SQL Fiddle。
那么,已经尝试过了。不起作用。 :( – PyCodoop
MySQL或SQL服务器? –