Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Запрос cast&convert  [new]
maksim.yugai
Member

Откуда:
Сообщений: 110
Добрый день, друзья.

Есть запрос - указанный ниже. Вопрос следующий, как правильно сделать запрос, чтобы ответ был точным, без округления. Например, если @total_calls int = 1064, @miss_total int = 54, то @miss_percent float = 3,36658. На текущий момент ответ округляется до ближайшего целого числа - 3. Необходимо, чтобы показывало 3,36658.

Что мне необходимо исправить?

declare @total_calls int
declare @miss_total int
declare @miss_percent float

set @miss_total = (
	select count(distinct IdChain) 
	from [dbo].[A_Stat_Connections_1x1] as EC
	where FromCC = 1 and StopSide = 1 and ReasonStart = 2
)
set @total_calls = (
	select count(distinct IdChain)
	from [dbo].[A_Stat_Connections_1x1]
)
set @miss_percent = round(convert(float, @miss_total * 100/@total_calls), 4)

select @miss_percent as [miss%]
27 апр 15, 08:21    [17567292]     Ответить | Цитировать Сообщить модератору
 Re: Запрос cast&convert  [new]
Glory
Member

Откуда:
Сообщений: 104760
maksim.yugai
Необходимо, чтобы показывало 3,36658.

Значит нужно приводить к типу с такими числом знаков после запятой

А @miss_total * 100/@total_calls - это int * int /int что дает int
27 апр 15, 08:26    [17567302]     Ответить | Цитировать Сообщить модератору
 Re: Запрос cast&convert  [new]
maksim.yugai
Member

Откуда:
Сообщений: 110
Glory
Значит нужно приводить к типу с такими числом знаков после запятой


Тут я это и хотел сделать,
set @miss_percent = round(convert(float, @miss_total * 100/@total_calls), 5)


Нужно было везде float использовать.

Спасибо.
27 апр 15, 09:13    [17567404]     Ответить | Цитировать Сообщить модератору
 Re: Запрос cast&convert  [new]
Glory
Member

Откуда:
Сообщений: 104760
maksim.yugai
Нужно было везде float использовать.

А вы знаете, что такое float ? Сколько у этого типа данных позиций после запятой ?
27 апр 15, 09:15    [17567412]     Ответить | Цитировать Сообщить модератору
 Re: Запрос cast&convert  [new]
Кролик-зануда
Guest
Glory,

при условии значения <=100% вполне себе не меньше 5 :)
27 апр 15, 10:42    [17567944]     Ответить | Цитировать Сообщить модератору
 Re: Запрос cast&convert  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 7868
Кролик-зануда,

float приближенное представление чисел. Для точного используйте numeric.
27 апр 15, 11:59    [17568403]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить