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

Mysql SQL:select语句中对聚合函数的算术运算显示错误信息,mysql,sql-server,parallel-data-warehouse,Mysql,Sql Server,Parallel Data Warehouse,我正在处理一个查询,以便在Microsoft并行数据仓库(PDW)上收集一些数据 查询的一部分如下所示-- 显然,查询没有显示任何错误。它成功运行,但所有列中的数据都正确,SkewPct除外,它只显示零 请帮我解决这个问题 我认为您在除法过程中缺少1.0的乘法,如下所示: cast((((max(rows)-min(rows))/(sum(rows)*1.0))*100) as float) as SkewPct; 除法在将分数转换为浮点之前删除分数我认为除法过程中缺少1.0的乘法,如下所示:

我正在处理一个查询,以便在Microsoft并行数据仓库(PDW)上收集一些数据

查询的一部分如下所示--

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


请帮我解决这个问题

我认为您在除法过程中缺少1.0的乘法,如下所示:

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

除法在将分数转换为浮点之前删除分数

我认为除法过程中缺少1.0的乘法,如下所示:

cast((((max(rows)-min(rows))/(sum(rows)*1.0))*100) as float) as SkewPct;
根据MySQL,“除法”在将分数转换为浮点之前删除分数,
float
不是用于
CAST
的有效类型,您应该使用
DECIMAL
,最大数字(M)和DECIMAL(D)作为tw参数:

生成一个十进制值。如果给出可选的M和D值, 它们指定了最大位数(精度)和 小数点后的位数(刻度)

默认情况下,该值将四舍五入为
int
,小数点为0。请查看以下查询:

SELECT CAST((((127-23)/541)*100) as DECIMAL), CAST(19.2237 AS DECIMAL(7, 5))
第一列的结果是
19
,而第二列的结果是
19.2237

以下是MySQL的

FLOAT
不是有效的类型,不能与
CAST
一起使用,您应该使用
DECIMAL
,最大数字(M)和DECIMAL(D)作为tw参数:

生成一个十进制值。如果给出可选的M和D值, 它们指定了最大位数(精度)和 小数点后的位数(刻度)

默认情况下,该值将四舍五入为
int
,小数点为0。请查看以下查询:

SELECT CAST((((127-23)/541)*100) as DECIMAL), CAST(19.2237 AS DECIMAL(7, 5))
第一列的结果是
19
,而第二列的结果是
19.2237


这是MySQL还是sql server?MySQL还是sql server?