我试图对一个字段求平均,这很简单,但是某些值存在一些问题。我知道有些值太大了,我希望按字符数排除它们(我可能最多输入4个字符)。
我不熟悉可以执行此操作的sql子句。如果有的话那就太好了。
select avg(convert(float,duration)) as averageduration
from AsteriskCalls where ISNUMERIC(duration) = 1
我希望输出为500-1000左右,但是会显示为8位数字。
答案 0 :(得分:1)
这很容易:
select avg(convert(float,duration)) as averageduration
from AsteriskCalls
where ISNUMERIC(duration) = 1 and length(duration) <= 4;
这当然不一定有效,因为您可以拥有'1E30'
,这将是一个很大的数字。而且会错过'0.001'
,这是一个很小的数字。
更准确的方法是使用try_convert()
:
select avg(try_convert(float, duration)) as averageduration
from AsteriskCalls
where try_convert(float, duration) <= 1000.0
那可能应该是:
where abs(try_convert(float, duration)) <= 1000.0