Как ограничить количество персонажа, из которого вы выбираете - PullRequest
0 голосов
/ 11 июня 2019

Я пытаюсь усреднить поле, и это очень просто сделать, но есть некоторые проблемы с некоторыми значениями.Есть значения, которые, как я знаю, слишком велики, и я надеялся исключить их по количеству символов (возможно, я бы поставил максимум 4 символа).

Я не знаком с предложением sql, которое могло бы выполнить это.Если есть один, который был бы великолепен.

select avg(convert(float,duration)) as averageduration
from AsteriskCalls where ISNUMERIC(duration) = 1

Я ожидаю, что выходной сигнал будет около 500-1000, но он будет представлять собой 8-значное число.

1 Ответ

1 голос
/ 11 июня 2019

Это достаточно просто:

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
...