SQL:select语句中聚合函数的算术运算显示错误信息

时间:2017-05-20 10:04:06

标签: mysql sql-server parallel-data-warehouse

我正在研究收集Microsoft并行数据仓库(PDW)上的一些数据。

查询的一部分如下 -

    [HttpPost]
    public JsonResult Register(string Name, string Birthday, int Gender)
    {
        .
        .
        .
        return Json(message);
    }

显然查询没有显示任何错误。它运行成功但在除SkewPct之外的所有列中都有正确的数据,只显示零。

请帮我解决这个问题!

2 个答案:

答案 0 :(得分:0)

我认为你在分裂期间缺少1.0的乘法如下:

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

Divide在将其转换为float

之前删除该部分

答案 1 :(得分:0)

根据MySQL documentationFLOAT不是与CAST一起使用的有效类型,您应该使用DECIMAL代替,最大数字(M)和十进制( D)作为两个论点:

  

生成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