Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / проблема с функцией avg() / 7 сообщений из 7, страница 1 из 1
30.01.2006, 16:28
    #33511372
Abrik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
проблема с функцией avg()
Sybase ASE. Пишу:
Код: plaintext
1.
select avg(price) from product
Выводит целое число, а должно выводить вещественное
...
Рейтинг: 0 / 0
30.01.2006, 16:35
    #33511391
vooo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
проблема с функцией avg()
а поле price какого типа ?
если целого?! , то можно предложить
Код: plaintext
1.
select avg(price* 1 . 0 ) from product
...
Рейтинг: 0 / 0
30.01.2006, 16:42
    #33511426
Abrik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
проблема с функцией avg()
да поле целого типа. спасибо за совет, а можно обойтись без дополнительного умножения или надо что б тип был вещественным?
...
Рейтинг: 0 / 0
30.01.2006, 16:49
    #33511462
vooo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
проблема с функцией avg()
а можно обойтись без дополнительного умножения или надо что б тип был вещественным

смотря как организовано хранение данных и что хотите получить в итоге
Существует тип money (хотя иногда в поле price может содержаться сумма в копейках - почему и нет)
Если в результате хотите получить вещественное число - то можно воспользоваться вместо домножения на 1.0 приведением типов, например convert:
Код: plaintext
1.
select avg(convert(numeric( 10 , 2 ),price)) from #test
...
Рейтинг: 0 / 0
30.01.2006, 17:02
    #33511505
Abrik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
проблема с функцией avg()
Спасибо большое. Вся проблема была именно в приведении типов, а price я так, для примера выбрал, мне просто нужно было получить вещественный тип, теперь понял что без приведения не обойтись.
...
Рейтинг: 0 / 0
30.01.2006, 17:47
    #33511649
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
проблема с функцией avg()
AbrikВыводит целое число, а должно выводить вещественное

А кто сказал, что должно выводить вещественное ?
Но лучше не домножать на что-то, а явно привести к нужному типу данных:

select (convert numeric(10,2), avg(xxx) ) ...
...
Рейтинг: 0 / 0
30.01.2006, 21:09
    #33512002
vooo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
проблема с функцией avg()
Но лучше не домножать на что-то, а явно привести к нужному типу данных:
select (convert numeric(10,2), avg(xxx) ) ...

Это не совсем правильно, точнее не правильно. Если xxx - тип integer, то данное приведение ни к чему хорошему не приведет - т к результат будет "целое вещественное"
Нужно именно
avg(convert(numeric(10,2),xxx))
...
Рейтинг: 0 / 0
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / проблема с функцией avg() / 7 сообщений из 7, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]