Contagem condicional: diferenças de desempenho no uso de SUM () vs COUNT ()?
Apenas como um exemplo muito simples, digamos que eu tenho mesatest
com dados de amostra como:
a | b
-------------
1 | 18
1 | 24
1 | 64
1 | 82
1 | 10
1 | 7
2 | 5
2 | 18
2 | 66
2 | 72
3 | 81
3 | 97
E para cadaa
, Eu tenho que contar quantosb
são os que são <50. O resultado seria:
a | bcnt
--------------
1 | 4
2 | 2
3 | 0
Agora eu poderia conseguir esse resultado de duas maneiras:
SELECT a, COUNT(CASE WHEN b < 50 THEN 1 ELSE NULL END) AS bcnt
FROM test
GROUP BY a
Ou:
SELECT a, SUM(CASE WHEN b < 50 THEN 1 ELSE 0 END) AS bcnt
FROM test
GROUP BY a
Eu sei que isso pode parecer uma questão trivial tão insignificante, mas a minha pergunta é se haveria alguma vantagem (embora tão pequena) em usar uma abordagem sobre a outra em termos de: Desempenho? ... Quantos outros SGBDs eles trabalhariam em ? ... Clareza de afirmação? ... etc.