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

Откуда:
Сообщений: 247
Есть запрос типа

select count(t.a) from my_table as t
group by t.b
where t.b = @const


Все работает замечательно, как и задумывалось т.е. если при данном t.b = @const есть неNULL значения в t.a, то вернет что-то >0.
Иначе вернет = 0. Смущает лишь, что в последнем случае еще и выдаст варнинг:

Null value is eliminated by an aggregate or other SET operation.

Как по-человечески от варнинга избавиться?
15 июл 13, 12:32    [14566836]     Ответить | Цитировать Сообщить модератору
 Re: группа со всеми значениям NULL  [new]
Сергей Викт.
Member

Откуда: Москва
Сообщений: 888
зеленый админ
Есть запрос типа

select count(t.a) from my_table as t
group by t.b
where t.b = @const


Все работает замечательно, как и задумывалось т.е. если при данном t.b = @const есть неNULL значения в t.a, то вернет что-то >0.
Иначе вернет = 0. Смущает лишь, что в последнем случае еще и выдаст варнинг:

Null value is eliminated by an aggregate or other SET operation.

Как по-человечески от варнинга избавиться?

А как звучит задача-то? Что надо посчитать?
Warning вас предупреждает о том, что вы используете NULL в операции COUNT
15 июл 13, 12:38    [14566921]     Ответить | Цитировать Сообщить модератору
 Re: группа со всеми значениям NULL  [new]
iap
Member

Откуда: Москва
Сообщений: 47142
зеленый админ
Есть запрос типа

select count(t.a) from my_table as t
group by t.b
where t.b = @const



Все работает замечательно, как и задумывалось т.е. если при данном t.b = @const есть неNULL значения в t.a, то вернет что-то >0.
Иначе вернет = 0. Смущает лишь, что в последнем случае еще и выдаст варнинг:

Null value is eliminated by an aggregate or other SET operation.

Как по-человечески от варнинга избавиться?
SUM(CASE WHEN t.a IS NULL THEN 0 ELSE 1 END)
Можно, конечно,
SET ANSI_WARNINGS OFF
Но только далеко не всегда и не везде это возможно.
Да и в будущих версиях обещают сделать этот SET всегда ON
15 июл 13, 12:41    [14566951]     Ответить | Цитировать Сообщить модератору
 Re: группа со всеми значениям NULL  [new]
зеленый админ
Member

Откуда:
Сообщений: 247
iap,

точно, спс!
15 июл 13, 12:44    [14566991]     Ответить | Цитировать Сообщить модератору
 Re: группа со всеми значениям NULL  [new]
Eugene_p1
Member

Откуда: Москва
Сообщений: 295
зеленый админ,
Как вариант
select count(IsNull(t.a, 0))
....
15 июл 13, 12:47    [14567008]     Ответить | Цитировать Сообщить модератору
 Re: группа со всеми значениям NULL  [new]
iap
Member

Откуда: Москва
Сообщений: 47142
Eugene_p1
зеленый админ,
Как вариант
select count(IsNull(t.a, 0))
....
И строки с NULL посчитаются в виде нулей!
А их не надо считать вообще!
15 июл 13, 12:50    [14567028]     Ответить | Цитировать Сообщить модератору
 Re: группа со всеми значениям NULL  [new]
Eugene_p1
Member

Откуда: Москва
Сообщений: 295
iap
Eugene_p1
зеленый админ,
Как вариант
select count(IsNull(t.a, 0))
....
И строки с NULL посчитаются в виде нулей!
А их не надо считать вообще!

Стоп, если не надо считать, тогда будет условие
WHERE t.a IS NOT NULL

А у автора, как я понял, NULL строки тоже считаются, его только warning беспокоит.
15 июл 13, 12:56    [14567077]     Ответить | Цитировать Сообщить модератору
 Re: группа со всеми значениям NULL  [new]
iap
Member

Откуда: Москва
Сообщений: 47142
Eugene_p1
iap
пропущено...
И строки с NULL посчитаются в виде нулей!
А их не надо считать вообще!

Стоп, если не надо считать, тогда будет условие
WHERE t.a IS NOT NULL


А у автора, как я понял, NULL строки тоже считаются, его только warning беспокоит.
COUNT(<Выражение>) считает количество строк, для которых <Выражение> возвращает не-NULL!
Но при этом результат сопровождается сообщением, что NULLы были проигнорированы в агрегатной функции.
Если SET ANSI_WARNINGS ON. А это почти обязательно.
15 июл 13, 12:59    [14567111]     Ответить | Цитировать Сообщить модератору
 Re: группа со всеми значениям NULL  [new]
iap
Member

Откуда: Москва
Сообщений: 47142
А с NULLами считает COUNT(*)
15 июл 13, 13:00    [14567120]     Ответить | Цитировать Сообщить модератору
 Re: группа со всеми значениям NULL  [new]
Eugene_p1
Member

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

Понятно, спасибо!

Тогда я бы всё же убрал ворнинг условием, кмк самый правильный вариант.
15 июл 13, 13:10    [14567186]     Ответить | Цитировать Сообщить модератору
 Re: группа со всеми значениям NULL  [new]
iap
Member

Откуда: Москва
Сообщений: 47142
Кстати, там удивительным образом не на своих местах расположены WHERE и GROUP BY.
Тем не менее утверждается, что запрос выполняется.
15 июл 13, 13:22    [14567249]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить