Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft Access Новый топик    Ответить
 Функция sum?  [new]
Serg197311
Member

Откуда:
Сообщений: 209
SELECT MAIN.CODE, techproc.cm1, MAIN.COMMENT, MAIN.MARKA, matsuP.mqq, mun.measun
FROM..........
WHERE............
GROUP BY MAIN.CODE, techproc.cm1, MAIN.COMMENT, MAIN.MARKA, matsuP.mqq, mun.measun;

Беру я из этого запроса несколько строк с одинаковым MAIN.CODE, суммирую руками matsuP.mqq и получаю некую цифру

Убираю одно поле и ставлю sum
SELECT MAIN.CODE, MAIN.COMMENT, MAIN.MARKA, Sum(matsuP.mqq) AS [Sum-mqq], mun.measun
FROM..........
WHERE ........
GROUP BY MAIN.CODE, MAIN.COMMENT, MAIN.MARKA, mun.measun;

И в строке с нужным MAIN.CODE получаю бред - цифра на порядок больше посчитанной руками....
Что я делаю не так?
20 сен 18, 08:58    [21680290]     Ответить | Цитировать Сообщить модератору
 Re: Функция sum?  [new]
Serg197311
Member

Откуда:
Сообщений: 209
Причем, если я выберу другой MAIN.CODE,то там складывает правильно.....
20 сен 18, 09:11    [21680300]     Ответить | Цитировать Сообщить модератору
 Re: Функция sum?  [new]
Serg197311
Member

Откуда:
Сообщений: 209
Еще - формат mqq - двойное с плавающей точкой, и неправильно считает там где есть цифры после запятой, целые числа складывает правильно...
20 сен 18, 09:16    [21680303]     Ответить | Цитировать Сообщить модератору
 Re: Функция sum?  [new]
Akina
Member

Откуда: Зеленоград, Москва, Россия
Сообщений: 18005
Serg197311
цифра на порядок больше посчитанной руками....

А во FROM случайно нет ли нескольких таблиц? Видишь ли, если связываешь пару таблиц, и в каждой по 2 записи - в итоге ты получишь 4 записи, и сумма будет кратно увеличена.

Посему надо суммировать в подзапросе по одной таблице, а уж потом к ней привязывать остальные.

Serg197311
формат mqq - двойное с плавающей точкой, и неправильно считает там где есть цифры после запятой
Replace запятой на точку.
20 сен 18, 09:29    [21680315]     Ответить | Цитировать Сообщить модератору
 Re: Функция sum?  [new]
Serg197311
Member

Откуда:
Сообщений: 209
Akina
А во FROM случайно нет ли нескольких таблиц? Видишь ли, если связываешь пару таблиц, и в каждой по 2 записи - в итоге ты получишь 4 записи, и сумма будет кратно увеличена.




FROM (MAIN1 INNER JOIN (spztmp INNER JOIN techproc ON spztmp.cdtp = techproc.cm1) ON MAIN1.code = spztmp.codm1) INNER JOIN (mun INNER JOIN (MAIN INNER JOIN matsuP ON MAIN.CODE = matsuP.codm) ON mun.code = MAIN.Mun) ON techproc.code = matsuP.codetp
20 сен 18, 09:33    [21680318]     Ответить | Цитировать Сообщить модератору
 Re: Функция sum?  [new]
Serg197311
Member

Откуда:
Сообщений: 209
Akina
Посему надо суммировать в подзапросе по одной таблице, а уж потом к ней привязывать остальные.

Ага..... Щас попробуем....
20 сен 18, 09:34    [21680319]     Ответить | Цитировать Сообщить модератору
 Re: Функция sum?  [new]
Serg197311
Member

Откуда:
Сообщений: 209
SELECT Sum(matsuP.mqq) AS [Sum-mqq], MAIN.CODE
FROM MAIN INNER JOIN matsuP ON MAIN.CODE = matsuP.codm
WHERE (((matsuP.codetp) In (SELECT techproc.code
FROM techproc INNER JOIN (MAIN1 INNER JOIN spztmp ON MAIN1.code = spztmp.codm1) ON techproc.cm1 = spztmp.cdtp
WHERE (((MAIN1.sernn)=[Формы]![spzcr]![serc]))
GROUP BY techproc.code;)))
GROUP BY MAIN.CODE;

Асилел Спасибо Akina!
20 сен 18, 10:12    [21680371]     Ответить | Цитировать Сообщить модератору
 Re: Функция sum?  [new]
Serg197311
Member

Откуда:
Сообщений: 209
А вопрос остался.... почему неправильный запрос правильно суммировал целые цифры.....
20 сен 18, 10:47    [21680429]     Ответить | Цитировать Сообщить модератору
 Re: Функция sum?  [new]
Игортан
Member

Откуда: Беларусь
Сообщений: 816
Serg197311,

они могли совпадать, тогда соединение получалось "правильно"
зависит все от уникальности всех строк
20 сен 18, 11:20    [21680502]     Ответить | Цитировать Сообщить модератору
 Re: Функция sum?  [new]
sdku
Member

Откуда: Краснодар
Сообщений: 5159
Serg197311
Еще - формат mqq - двойное с плавающей точкой, и неправильно считает там где есть цифры после запятой, целые числа складывает правильно...
А двойное с плавающей точкой-это зачем?(разве что посчитать количество звезд в галактике,а то и во вселенной) Почитайте про этот тип и ответьте, себе в первую очередь, возможен ли, в принципе, точный результат с этим типом хоть в "правильном",хоть в "не правильном" запросе.
20 сен 18, 11:58    [21680584]     Ответить | Цитировать Сообщить модератору
 Re: Функция sum?  [new]
sdku
Member

Откуда: Краснодар
Сообщений: 5159
вернее не тип, а формат
20 сен 18, 12:23    [21680614]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft Access Ответить