Я пытаюсь сделать агрегации в выписке.Я нашел 2 способа сделать это.Кто-нибудь может сказать, в чем разница между двумя?
(CASE WHEN Event = 5 THEN count(*) ELSE 0 END ) Follow_Count GROUP BY Event;
SUM(CASE Event WHEN 5 THEN 1 ELSE 0 END) AS Follow_Count
Ваш случай 1 создаст строку для каждого события в таблице (из вашей группы по).Ваш случай 2 просто вернет 1 строку.
Есть ли причина, по которой вы не просто напишите:
select count(*) from my_table where event = 5;
Лучше было бы:
count(CASE Event WHEN 5 THEN 1 END) AS Follow_Count
Потому что 1) для подсчета использовался собственный стандартный счетчик, 2) «остальное» не нужно (подсчет не считать нули)
С уважением, СаянM.
Нет существенной разницы. Вы можете решить для себя, что лучше, сравнивая их планы выполнения.