Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Точность результата SUM()  [new]
Arsave
Member

Откуда: Волжский
Сообщений: 235
Есть таблица
13 июл 09, 16:34    [7409688]     Ответить | Цитировать Сообщить модератору
 Re: Точность результата SUM()  [new]
Arsave
Member

Откуда: Волжский
Сообщений: 235
блин, долбаный ctrl+enter

Итак.
Есть таблица с полями (тип int, значение real) со значениями:
тип значение
1 1,001
1 1,002
2 1,1

Запрос
Select тип, SUM(значение) as сумма
from table1
group by тип
дает такие результаты:
тип сумма
1 2,00300002098084
2 1,10000002384186

Как сделать так чтобы получился такой результат:
тип сумма
1 2,003
2 1,1

??
13 июл 09, 16:42    [7409758]     Ответить | Цитировать Сообщить модератору
 Re: Точность результата SUM()  [new]
Maxx
Member [скрыт]

Откуда:
Сообщений: 24290
атлично)
-------------------------------------
Jedem Das Seine
13 июл 09, 16:42    [7409760]     Ответить | Цитировать Сообщить модератору
 Re: Точность результата SUM()  [new]
Maxx
Member [скрыт]

Откуда:
Сообщений: 24290
а почему точность в ответах разная ???

1 2,003
2 1,1
-------------------------------------
Jedem Das Seine
13 июл 09, 16:44    [7409788]     Ответить | Цитировать Сообщить модератору
 Re: Точность результата SUM()  [new]
Паганель
Member

Откуда: Винница
Сообщений: 22552
Arsave
Как сделать так чтобы получился такой результат:
тип сумма
1 2,003
2 1,1
??
Сначала расскажите, пожалуйста, из каких соображений для хранения значений был избран тип real
13 июл 09, 16:45    [7409794]     Ответить | Цитировать Сообщить модератору
 Re: Точность результата SUM()  [new]
Arsave
Member

Откуда: Волжский
Сообщений: 235
Паганель, поле должно хранить десятичные числа с точностью до 4-х знаков после запятой...
13 июл 09, 16:50    [7409841]     Ответить | Цитировать Сообщить модератору
 Re: Точность результата SUM()  [new]
Arsave
Member

Откуда: Волжский
Сообщений: 235
Maxx
а почему точность в ответах разная ???

1 2,003
2 1,1
13 июл 09, 16:51    [7409851]     Ответить | Цитировать Сообщить модератору
 Re: Точность результата SUM()  [new]
Konst_One
Member

Откуда:
Сообщений: 11513
Arsave
Паганель, поле должно хранить десятичные числа с точностью до 4-х знаков после запятой...



чем вам money не угодил?
13 июл 09, 16:52    [7409857]     Ответить | Цитировать Сообщить модератору
 Re: Точность результата SUM()  [new]
Arsave
Member

Откуда: Волжский
Сообщений: 235
Maxx
а почему точность в ответах разная ???

1 2,003
2 1,1


опять ctrl+enter по привычке нажал )) сорри

мне в принципе не точность нужна? а вид, как это будет отображаться в клиенте (access 2003)
13 июл 09, 16:53    [7409869]     Ответить | Цитировать Сообщить модератору
 Re: Точность результата SUM()  [new]
Konst_One
Member

Откуда:
Сообщений: 11513
ну так, округлите результат с нужной точностью
13 июл 09, 16:54    [7409880]     Ответить | Цитировать Сообщить модератору
 Re: Точность результата SUM()  [new]
daw
Member

Откуда: Муром -> Москва
Сообщений: 7381

> Паганель, поле должно хранить десятичные числа с точностью до 4-х знаков
> после запятой...

ну так, и используйте тогда тип данных с фиксированным числом знаков
после запятой - decimal или numeric.

Posted via ActualForum NNTP Server 1.4

13 июл 09, 16:57    [7409916]     Ответить | Цитировать Сообщить модератору
 Re: Точность результата SUM()  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74927
Arsave
мне в принципе не точность нужна? а вид, как это будет отображаться в клиенте (access 2003)


Вот и форматируйте это на клиенте. Сервер за "вид" не отвечает.
13 июл 09, 17:00    [7409942]     Ответить | Цитировать Сообщить модератору
 Re: Точность результата SUM()  [new]
Sator Arepo
Member

Откуда: Королев, М.О.
Сообщений: 2613
daw

> Паганель, поле должно хранить десятичные числа с точностью до 4-х знаков
> после запятой...

ну так, и используйте тогда тип данных с фиксированным числом знаков
после запятой - decimal или numeric.

ОФФ в этом форуме, но чисто практически: Decmial/numeric глюкаво отображаются: десятичный разделитель точка независимо от локальных настроек. Так шта с Аксом лучше Money - но у него своя заморочка: по умолчанию добавляется символ валюты.
13 июл 09, 17:03    [7409967]     Ответить | Цитировать Сообщить модератору
 Re: Точность результата SUM()  [new]
Паганель
Member

Откуда: Винница
Сообщений: 22552
Sator Arepo
[Decmial/numeric глюкаво отображаются: десятичный разделитель точка независимо от локальных настроек
И в чем глюкавость?
Где в документации написано, что должно зависеть от настроек?
13 июл 09, 17:05    [7409992]     Ответить | Цитировать Сообщить модератору
 Re: Точность результата SUM()  [new]
Sator Arepo
Member

Откуда: Королев, М.О.
Сообщений: 2613
Паганель
Sator Arepo
[Decmial/numeric глюкаво отображаются: десятичный разделитель точка независимо от локальных настроек
И в чем глюкавость?
Где в документации написано, что должно зависеть от настроек?

Виноват, недостаточно внятно написал. Глюкавость не сервера, а Аксесса - как клиента, некорректно отображающего полученное от сервера значение в формах, в случае запятой как десятичного разделителя. К самому типу претензий нет
13 июл 09, 17:10    [7410026]     Ответить | Цитировать Сообщить модератору
 Re: Точность результата SUM()  [new]
Arsave
Member

Откуда: Волжский
Сообщений: 235
pkarklin
Arsave
мне в принципе не точность нужна? а вид, как это будет отображаться в клиенте (access 2003)


Вот и форматируйте это на клиенте. Сервер за "вид" не отвечает.


Понял, полностью согласен с данной точкой зрения.

А кто-нибудь может сказать почему SUM() искажает сумму и как тогда получить такой результат:
1 2,00300000000000
2 1,10000000000000
?
13 июл 09, 17:10    [7410033]     Ответить | Цитировать Сообщить модератору
 Re: Точность результата SUM()  [new]
Sator Arepo
Member

Откуда: Королев, М.О.
Сообщений: 2613
Sator Arepo
Паганель
Sator Arepo
[Decmial/numeric глюкаво отображаются: десятичный разделитель точка независимо от локальных настроек
И в чем глюкавость?
Где в документации написано, что должно зависеть от настроек?

Виноват, недостаточно внятно написал. Глюкавость не сервера, а Аксесса - как клиента, некорректно отображающего полученное от сервера значение в формах, в случае запятой как десятичного разделителя. К самому типу претензий нет

Только что пришлось из-за этого конвертировать Decimal в Money .... Дибилизм
13 июл 09, 17:12    [7410047]     Ответить | Цитировать Сообщить модератору
 Re: Точность результата SUM()  [new]
Паганель
Member

Откуда: Винница
Сообщений: 22552
Arsave
и как тогда получить такой результат:
1 2,00300000000000
2 1,10000000000000
?
daw
используйте тогда тип данных с фиксированным числом знаков
после запятой - decimal или numeric.
13 июл 09, 17:13    [7410051]     Ответить | Цитировать Сообщить модератору
 Re: Точность результата SUM()  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74927
Arsave
А кто-нибудь может сказать почему SUM() искажает сумму и как тогда получить такой результат:
1 2,00300000000000
2 1,10000000000000
?


Кто Вам сказал, что "искажает"? Вы понимаете различие в физике точных типов данных (money, numeric) и типов данных с приблизительной точностью (real, float)?
13 июл 09, 17:13    [7410059]     Ответить | Цитировать Сообщить модератору
 Re: Точность результата SUM()  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74927
Sator Arepo
Глюкавость не сервера, а Аксесса - как клиента, некорректно отображающего полученное от сервера значение в формах, в случае запятой как десятичного разделителя. К самому типу претензий нет


Мне всегда казалось, что за форматирование на клиенте отвечает в первую очередь разработчик, устанавливающий для поля формат вывода и, при необходимости, маску ввода.
13 июл 09, 17:15    [7410069]     Ответить | Цитировать Сообщить модератору
 Re: Точность результата SUM()  [new]
Arsave
Member

Откуда: Волжский
Сообщений: 235
pkarklin
Arsave
А кто-нибудь может сказать почему SUM() искажает сумму и как тогда получить такой результат:
1 2,00300000000000
2 1,10000000000000
?


Кто Вам сказал, что "искажает"? Вы понимаете различие в физике точных типов данных (money, numeric) и типов данных с приблизительной точностью (real, float)?


Спасибо! Понял свою проблему ))
13 июл 09, 17:19    [7410100]     Ответить | Цитировать Сообщить модератору
 Re: Точность результата SUM()  [new]
сатор арепо
Guest
pkarklin, к сожалению никакой формат не может справиться с тем, чтобы в Аксессе (по крайней мере 2003) показать запятую (локальный разделитель) в качестве десятичного разделителя, если тип - decimal. Отображается только точка. Предлагаете конвертировать в Nvarchar, менять точку на запятую и добивать пробелами слева для красивого вывода? Вопрос риторический.
13 июл 09, 18:17    [7410420]     Ответить | Цитировать Сообщить модератору
 Re: Точность результата SUM()  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 36801
сатор арепо
pkarklin, к сожалению никакой формат не может справиться с тем, чтобы в Аксессе (по крайней мере 2003) показать запятую (локальный разделитель) в качестве десятичного разделителя, если тип - decimal. Отображается только точка. Предлагаете конвертировать в Nvarchar, менять точку на запятую и добивать пробелами слева для красивого вывода? Вопрос риторический.
Стопудово в том, что аксесс не может показать где-то там запятую вместо точки, виноват сервер. И вообще, спросите в форуме по акцессу, может вы просто не умеете его готовить.
13 июл 09, 18:54    [7410559]     Ответить | Цитировать Сообщить модератору
 Re: Точность результата SUM()  [new]
Sator Arepo
Member

Откуда: Королев, М.О.
Сообщений: 2613
Гавриленко Сергей Алексеевич
сатор арепо
pkarklin, к сожалению никакой формат не может справиться с тем, чтобы в Аксессе (по крайней мере 2003) показать запятую (локальный разделитель) в качестве десятичного разделителя, если тип - decimal. Отображается только точка. Предлагаете конвертировать в Nvarchar, менять точку на запятую и добивать пробелами слева для красивого вывода? Вопрос риторический.
Стопудово в том, что аксесс не может показать где-то там запятую вместо точки, виноват сервер. И вообще, спросите в форуме по акцессу, может вы просто не умеете его готовить.

Я уже жалею, что встрял - просто хотел предостеречь человека. Какими мне буквами написать, что я нигде MS SQL ни в чем не обвинял и все мои претензии исключительно к выводу numeric/decimal ИМЕННО В АКСЕССЕ? ИХМО, здесь уже стереотип играет: раз пишет чайник на Аксессе/скуле и у него проблема, значит будет обвинять сервер. Уж извините, что так резко.
Хотя, не исключаю возможности, что я действительно не умею готовить именно вывод скулевского DECIMAL/NUMERIC в аксессную форму.
13 июл 09, 19:08    [7410599]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить