Гость
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / COUNT с условием / 6 сообщений из 6, страница 1 из 1
03.10.2014, 18:38
    #38766553
sraider
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
COUNT с условием
Есть запрос
Код: sql
1.
2.
3.
4.
5.
6.
select x,
    count(*) cnt,
    sum(a * b) ab,
    sum(a) a
from tbl
group by x



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



ps. sql server 2005+
...
Рейтинг: 0 / 0
03.10.2014, 18:44
    #38766562
Shakill
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
COUNT с условием
sraider, нормальный вариант. можно else 0 убрать и sum заменить на count, например. но это без разницы
...
Рейтинг: 0 / 0
03.10.2014, 18:54
    #38766579
sraider
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
COUNT с условием
Shakill, спасибо

Код: sql
1.
  count(case when условие then 1 end)
...
Рейтинг: 0 / 0
03.10.2014, 20:27
    #38766622
Mind
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
COUNT с условием
sraider,

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

Код: plaintext
Warning: Null value is eliminated by an aggregate or other SET operation.
...
Рейтинг: 0 / 0
03.10.2014, 20:41
    #38766633
Гавриленко Сергей Алексеевич
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
COUNT с условием
Mindsraider,

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

Код: plaintext
Warning: Null value is eliminated by an aggregate or other SET operation.
Дык совсем свежий срач спор с репрессиями на эту тему совсем рядом: http://www.sql.ru/forum/1118771/sql-zapros-poluchit-summu-polozhitelnyh-i-summu-otricatelnyh-znacheniy
...
Рейтинг: 0 / 0
03.10.2014, 23:05
    #38766686
Shakill
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
COUNT с условием
Mindsraider,

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

Код: plaintext
Warning: Null value is eliminated by an aggregate or other SET operation.

тем что COUNT, на мой взгляд, более точно отражает смысл запроса
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / COUNT с условием / 6 сообщений из 6, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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