Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
Топик располагается на нескольких страницах: Ctrl  назад   1 [2]      все
 Re: Warning: Null value is eliminated by an aggregate or other SET operation.  [new]
iap
Member

Откуда: Москва
Сообщений: 46862
iap
SIMPLicity_
Тока что заюзал Картинка с другого сайта.
PS реально заюзал "SET ANSI_WARNINGS OFF" - сообщение просто мешает ...
Бывают ситуации (довольно часто), когда ТРЕБУЕТСЯ ANSI_WARNINGS ON !
И как вы тогда выйдете из положения?
Заменяйте NULL внутри агрегатных функций на 0 - это реально помогает.
А COUNT(<выражение>) заменять на SUM(CASE WHEN <выражение> IS NULL THEN 0 ELSE 1 END)
7 фев 19, 10:16    [21803257]     Ответить | Цитировать Сообщить модератору
 Re: Warning: Null value is eliminated by an aggregate or other SET operation.  [new]
andreymx
Member

Откуда: Запорожье
Сообщений: 52557
Менять в AVG null на ноль - извращение результата
7 фев 19, 10:51    [21803295]     Ответить | Цитировать Сообщить модератору
 Re: Warning: Null value is eliminated by an aggregate or other SET operation.  [new]
iap
Member

Откуда: Москва
Сообщений: 46862
andreymx
Менять в AVG null на ноль - извращение результата
Сначала надо понять, а какой смысл в вычислении среднего с участием строк с неизвестным значением (NULL).
Может, это будет извращение извращения?
7 фев 19, 11:55    [21803371]     Ответить | Цитировать Сообщить модератору
 Re: Warning: Null value is eliminated by an aggregate or other SET operation.  [new]
andreymx
Member

Откуда: Запорожье
Сообщений: 52557
iap,

да то оно да
но и просто вставлять isnull так себе решение
select avg("зарплата"),
       avg("надбавка"),
       avg(isnull("надбавка", 0))
  from(
select 1. "зарплата", 1. "надбавка"
union all
select 2. "зарплата", null "надбавка"
) a
(No column name)(No column name)(No column name)
1.5000001.0000000.500000
7 фев 19, 12:18    [21803380]     Ответить | Цитировать Сообщить модератору
 Re: Warning: Null value is eliminated by an aggregate or other SET operation.  [new]
iap
Member

Откуда: Москва
Сообщений: 46862
andreymx
iap,

да то оно да
но и просто вставлять isnull так себе решение
select avg("зарплата"),
       avg("надбавка"),
       avg(isnull("надбавка", 0))
  from(
select 1. "зарплата", 1. "надбавка"
union all
select 2. "зарплата", null "надбавка"
) a

(No column name)(No column name)(No column name)
1.5000001.0000000.500000
Можно ещё попробовать делить сумму на разный count(). Тоже развлечение.
7 фев 19, 12:28    [21803391]     Ответить | Цитировать Сообщить модератору
 Re: Warning: Null value is eliminated by an aggregate or other SET operation.  [new]
SIMPLicity_
Member

Откуда: (((@)))
Сообщений: 8564
iap
SIMPLicity_
Тока что заюзал Картинка с другого сайта.
PS реально заюзал "SET ANSI_WARNINGS OFF" - сообщение просто мешает ...
Бывают ситуации (довольно часто), когда ТРЕБУЕТСЯ ANSI_WARNINGS ON !
И как вы тогда выйдете из положения?
Заменяйте NULL внутри агрегатных функций на 0 - это реально помогает.


Согласен. Но ноги-то растут не от того, что "null" а не 0 ... В данной ситуации он реально мне "не упёрся",- поэтому его (этот ворнин) и стал игнорировать... Тем более что в рабочем контуре null там не может оказаться в принципе - подобные вещи будут отфильтровываться ещё за два - три шага "до"... ;-)
7 фев 19, 17:08    [21803711]     Ответить | Цитировать Сообщить модератору
 Re: Warning: Null value is eliminated by an aggregate or other SET operation.  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 6821
Надо не костыли вбивать, а исключить ситуацию, при которой возникает предупреждение. Если такое поведение является намеренным, то отфильтровывайте строки с NULL. Иначе тут считаем, а тут не считаем, всего сто, а среднее значение раздаётся и на отсутствующих.
7 фев 19, 17:17    [21803725]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: Ctrl  назад   1 [2]      все
Все форумы / Microsoft SQL Server Ответить