#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)