powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Как написать агрегатную функцию (ака Sum() / Max())
12 сообщений из 12, страница 1 из 1
Как написать агрегатную функцию (ака Sum() / Max())
    #32274282
Alexus12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Народ!
Такая проблема:
собираем в Union данные,
получаем две похожие строки (цифрами различаются - sum() = получили, что нада), вешаем на него Group By.

но вот беда: есть текстовое поле Примечание, которое в одном запросе всегда пустое,
а в другом местами есть текст - ессно, группировка на нем и спотыкается.
пример:

есть:

ОргА 120 0 Примечание:за товар
ОргА 0 230 <null>

нада после группировки:

ОргА 120 230 Примечание:за товар

А группировка не пройдет, null мешается.

Какую функцию применить, чтобы в итоге после агрегирования получить 1 строку и с примечанием?
Или как написать агрегатную фцию, которая это смогет?
Спасибо всем!
...
Рейтинг: 0 / 0
Как написать агрегатную функцию (ака Sum() / Max())
    #32274295
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Max - это не то?
...
Рейтинг: 0 / 0
Как написать агрегатную функцию (ака Sum() / Max())
    #32274332
Alexus12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
первое ,что испытано. Вроде получается *то*, теперь ищу подтверждения БЕЗОШИБОЧНОСТИ ее отрабатывания (типа спотык на Ё и т.д...)
...
Рейтинг: 0 / 0
Как написать агрегатную функцию (ака Sum() / Max())
    #32274353
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Null всегда будет меньше, чем любое другое значение.
...
Рейтинг: 0 / 0
Как написать агрегатную функцию (ака Sum() / Max())
    #32274365
sasha_1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>Null всегда будет меньше, чем любое другое значение.
это для функции Max
а для Min наоборот
Null всегда будет БОЛЬШЕ, чем любое другое значение.

видимо Null просто не учитываются при вычислении этих функций.
...
Рейтинг: 0 / 0
Как написать агрегатную функцию (ака Sum() / Max())
    #32274370
Alexus12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
The DMin and DMax functions ignore Null values in the field referenced by expr. However, if no record satisfies criteria or if domain contains no records, the DMin and DMax functions return a Null.

А на агрегаты сиквела хэлп не работает...

У кого есть поделитесь, а? А2000
...
Рейтинг: 0 / 0
Как написать агрегатную функцию (ака Sum() / Max())
    #32274750
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Да, действительно. Я сейчас проверил живьем. Min и Max в роли агрегатных функций игнорируют Null'ы. Таким образом, если есть данные такого вида:

1
2
Null
4
5

- то Min и Max вернут соответственно 1 и 5.

Однако со строками надо соблюдать осторожность. То, что визуально выглядит как Null, может оказаться на самом деле стрингом нулевой длины, так что Min'ом все-таки лучше не пользоваться.

Из строк "ААА" и Null - Max вернет "ААА".
Из строк "ААА" и "" - Max вернет "ААА".
Из строк "ААА" и Null - Min вернет "ААА".
Из строк "ААА" и "" - Min вернет "".
...
Рейтинг: 0 / 0
Как написать агрегатную функцию (ака Sum() / Max())
    #32274751
Фотография fedd
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
удивительно, и sum игнорирует пустые значения.

нет бы выдал null (неопределенность), встретив хоть один null... ;)
...
Рейтинг: 0 / 0
Как написать агрегатную функцию (ака Sum() / Max())
    #32274772
(c)VIG
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Alexus12
Попробуй такой вариант
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
select a.fld_name,a.sum1,a.sum2,b.fld_descr
from 
     (select fld_name,sum(fld_sum1) as sum1,sum(fld_sum2) as sum2
      from my_query group by fld_name) as a
left join
     (select fld_name,fld_descr from my_query where descr is not null) as b
on a.fld_name=b.fld_name
...
Рейтинг: 0 / 0
Как написать агрегатную функцию (ака Sum() / Max())
    #32274779
Gavr107
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Если тебе не нужны агрегативные функции, а только уникальные результаты, попробуй SELECT DISTINCT. Не забудь в UNION вывести уникальный ключ.
...
Рейтинг: 0 / 0
Как написать агрегатную функцию (ака Sum() / Max())
    #32274781
Gavr107
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Забыл сказать, попробой использовать Nz(Поле,'') или Nz(Поле,0) вместо Поле.
...
Рейтинг: 0 / 0
Как написать агрегатную функцию (ака Sum() / Max())
    #32275371
Alexus12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>удивительно, и sum игнорирует пустые значения.
Видимо, он живет по образу и подобию этого:
DMin and DMax functions ignore Null values in the field referenced by expr. However, if no record satisfies criteria or if domain contains no records, the DMin and DMax functions return a Null.

>Если тебе не нужны агрегативные функции
Нужны - см. пост1. - иначе получу бред

2 VIG: отдельно суммы, отдельно ненуллы, затем джойн?
да, такое прокатить.
но пока пользую Max() - до первого глюка так сказать ;)
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Как написать агрегатную функцию (ака Sum() / Max())
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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