агрегации в выписке - PullRequest
       5

агрегации в выписке

2 голосов
/ 18 ноября 2010

Я пытаюсь сделать агрегации в выписке.Я нашел 2 способа сделать это.Кто-нибудь может сказать, в чем разница между двумя?

  1. (CASE WHEN Event = 5 THEN count(*) ELSE 0 END ) Follow_Count GROUP BY Event;

  2. SUM(CASE Event WHEN 5 THEN 1 ELSE 0 END) AS Follow_Count

Ответы [ 3 ]

5 голосов
/ 18 ноября 2010

Ваш случай 1 создаст строку для каждого события в таблице (из вашей группы по).Ваш случай 2 просто вернет 1 строку.

Есть ли причина, по которой вы не просто напишите:

select count(*)
from my_table
where event = 5;
3 голосов
/ 18 ноября 2010

Лучше было бы:

count(CASE Event WHEN 5 THEN 1 END) AS Follow_Count

Потому что 1) для подсчета использовался собственный стандартный счетчик, 2) «остальное» не нужно (подсчет не считать нули)

С уважением, СаянM.

2 голосов
/ 18 ноября 2010

Нет существенной разницы. Вы можете решить для себя, что лучше, сравнивая их планы выполнения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...