SQL: Как считать строки из числовых значений присваивания?

#mysql #sql

Вопрос:

Я начал изучать SQL со вчерашнего дня, надеюсь, вы, ребята, сможете мне помочь. Кроме того, я немного плохо пишу и объясняю. Надеюсь, ты понимаешь, что я пытаюсь сказать.

У меня есть поле «MANUAL_ENTRY». которое принимает значения 0, 1 , 3

 CASE MANUAL_ENTRY WHEN 0 then 'Agent' 
                  when 1 then 'Manual' 
                  when 2 then 'WSAPI' 
                  when 3 then REMOTE_HOST_PROTOCOL.SOURCE 
                  else 'Unknown' END
 

Я в состоянии подсчитать для COUNT(WHEN 0 then 'Agent' end)

Но, не могу сосчитать значения для «Неизвестно».

Я вроде как попробовал это COUNT(CASE MANUAL_ENTRY When '' then 'Unknown' end) сделать, но спросил себя, как я могу предположить, что в него записывается нулевое значение.

как я могу ПОСЧИТАТЬ записи для «Неизвестных»?

-Правин

Комментарии:

1. Должны ли нулевые значения также считаться неизвестными? Если это правда, то SUM(CASE WHEN MANUAL_ENTRY IN (0,1,2,3) THEN 0 ELSE 1 END) .

2. большое вам спасибо за быстрый ответ и помощь @Akina. это сработало как заклинание. Слышал, что StackOverflow-отличное сообщество, не ожидавшее более быстрого отклика.

3. или SELECT count(manual_entry) - count(*) потому count(manual_entry) , что подсчитывает значения, которые не являются нулевыми, и count(*) подсчитывает все значения.

4. @Luuk Если нужно считать только нули, то SUM(manual_entry IS NULL) это самый очевидный вариант.

5. Или, для подсчета всех значений, не равных 0,1,2 или 3, можно было бы сделать sum(case i when 0 then 0 when 1 then 0 when 2 then 0 when 3 then 0 else 1 end)