Какой тип данных Т-SQL возвращает функция COUNT()? #623002


#0 by Лоботряс
Решил порешать задачки . Чисто для общего развития. Сразу возник затык из-за пробела в знаниях Т-SQL. Почему-то вот такое выражение в запросе "having count(tab.model)/5 = round(count(tab.model)/5,0,1)", которое теоретически должно оставлять только каждую пятую запись, не желает работать. В колонке count(tab.model)/5 почему-то выводятся только целые числа. Сразу признаюсь Т-SQL знаю плохо (особенно в части приведения типов), ногами прошу не бить... Есть люди, готовые блеснуть своими знаниями в этом вопросе? З.Ы. Текст запроса нужен?
#1 by shuhard
шёл бы ты на Sql.ru с такими вопросами
#2 by Лоботряс
А че так?
#3 by Rie
Непонятно, почему это выражение должно оставлять каждую пятую запись. А возвращает COUNT, вестимо, целое. А int/int в SQL даёт именно int, а не что-то иное.
#4 by prog2012
зачем?
#5 by Лоботряс
Ну потому что при группировке выражение count(tab.model) возвращает число равное порядковому номеру записи. А мне нужно выбрать только каждую 5-ю запись, т. е. кратную 5-ти. "А возвращает COUNT, вестимо, целое" а как мне результат преобразовать в дробное? Просто так.
#6 by Пеппи
а как мне результат преобразовать в дробное? и где? в запросе?
#7 by Rie
COUNT(tab.model)/5.0 (только всё равно странно это...)
#8 by Лоботряс
Да, в запросе. Это не 1с-овский запрос.
#9 by Лоботряс
Помогло спасибо. Хотя все равно ничего не понял:))
#10 by Rie
Тип результата деления в SQL зависит от типов аргументов. У тебя оба аргумента были типа int - вот и результат был int. 5.0 имеет тип decimal - вот и результат стал decimal.
#11 by Лоботряс
Благодарствую за разъяснение. Пойду наверное куда послали в первом посте.
#12 by prog2012
доложишь потом чем закончилось
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С