Eri*_*air 1 t-sql casting calculated-columns ibm-midrange
假设以下查询:
SELECT
ID,
COUNT(1) AS NumRecords,
SUM(Quantity) AS TotalQty
SUM(Quantity)/COUNT(1) AS Avg
FROM SOME_TABLE
GROUP BY ID
Run Code Online (Sandbox Code Playgroud)
现在它返回:
ID NumRecords TotalQty Avg
1 15 6 2
Run Code Online (Sandbox Code Playgroud)
我希望它返回一个小数为2的十进制值Avg(即"2.5").
我尝试CAST将计算作为DECIMAL,NUMERIC,FLOAT和VARCHAR,但它总是返回一个INTEGER.
您需要将输入转换为计算而不是结果.还有什么理由你没有使用这个AVG功能?
AVG(CAST(Quantity as decimal(10,2)))
Run Code Online (Sandbox Code Playgroud)
另一种解决方案是通过隐式转换。我发现这也是一种更简洁的SQL。精度将由乘以1时使用的尾随零的数目确定。
AVG(Quantity * 1.00) //x.xx
AVG(Quantity * 1.0000) //x.xxxx
Run Code Online (Sandbox Code Playgroud)