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

Откуда:
Сообщений: 325
Есть запрос
select x,
    count(*) cnt,
    sum(a * b) ab,
    sum(a) a
from tbl
group by x


Как можно в этом же запросе посчитать количество записей, удовлетворяющих определенному условию? (с учетом группировки)
На ум приходит только
    sum(case when условие then 1 else 0 end)


ps. sql server 2005+
3 окт 14, 18:38    [16658177]     Ответить | Цитировать Сообщить модератору
 Re: COUNT с условием  [new]
Shakill
Member

Откуда: мск
Сообщений: 1880
sraider, нормальный вариант. можно else 0 убрать и sum заменить на count, например. но это без разницы
3 окт 14, 18:44    [16658205]     Ответить | Цитировать Сообщить модератору
 Re: COUNT с условием  [new]
sraider
Member

Откуда:
Сообщений: 325
Shakill, спасибо

  count(case when условие then 1 end)
3 окт 14, 18:54    [16658273]     Ответить | Цитировать Сообщить модератору
 Re: COUNT с условием  [new]
Mind
Member

Откуда: Лучший город на Земле
Сообщений: 2322
sraider,

И чем же второй вариант лучше? Учитывая, что он генерит предупреждение:

Warning: Null value is eliminated by an aggregate or other SET operation.
3 окт 14, 20:27    [16658686]     Ответить | Цитировать Сообщить модератору
 Re: COUNT с условием  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 37051
Mind
sraider,

И чем же второй вариант лучше? Учитывая, что он генерит предупреждение:

Warning: Null value is eliminated by an aggregate or other SET operation.
Дык совсем свежий срач спор с репрессиями на эту тему совсем рядом: https://www.sql.ru/forum/1118771/sql-zapros-poluchit-summu-polozhitelnyh-i-summu-otricatelnyh-znacheniy
3 окт 14, 20:41    [16658738]     Ответить | Цитировать Сообщить модератору
 Re: COUNT с условием  [new]
Shakill
Member

Откуда: мск
Сообщений: 1880
Mind
sraider,

И чем же второй вариант лучше? Учитывая, что он генерит предупреждение:

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

тем что COUNT, на мой взгляд, более точно отражает смысл запроса
3 окт 14, 23:05    [16659321]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить