Разовое использование COUNT в случае, когда - PullRequest
2 голосов
/ 01 апреля 2019

У меня есть столбец MessageId, и мне нужно считать количество различных MessageId, и если результат равен 1, тогда я должен отображать счет как 0, иначе само значение счетчика. Если набор данных больше, использование отличных от двух будет немного больше времени.

...
CASE 
   WHEN count(DISTINCT MessageId) = 1 
      THEN 0
   ELSE count(DISTINCT MessageId)
END as Count
...

Можно ли в любом случае использовать COUNT (DISTINCT) только один раз, используя только один запрос? А также не хочу использовать несколько запросов, таких как присвоение переменной, а затем ее использование.

Ответы [ 2 ]

4 голосов
/ 01 апреля 2019

Вот один из методов:

COALESCE(NULLIF(COUNT(DISTINCT MessageId), 1), 0)
1 голос
/ 01 апреля 2019

кажется вам нужно ниже

case when sum( case when MessageId= 1 then 1 else 0 end) =1
then 0  else
count(DISTINCT MessageId) end as cnt
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...