Условный подсчет: Различия в производительности при использовании SUM () против COUNT ()?
Просто в качестве очень простого примера, скажем, у меня есть таблицаtest
с образцами данных вот так:
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
И для каждогоa
Я могу посчитать, сколькоb
есть такие, которые & lt; 50. Результат будет выглядеть так:
a | bcnt
--------------
1 | 4
2 | 2
3 | 0
Теперь я мог достичь этого результата одним из двух способов:
SELECT a, COUNT(CASE WHEN b < 50 THEN 1 ELSE NULL END) AS bcnt
FROM test
GROUP BY a
Или же:
SELECT a, SUM(CASE WHEN b < 50 THEN 1 ELSE 0 END) AS bcnt
FROM test
GROUP BY a
Я знаю, что это может показаться таким незначительным тривиальным вопросом, но мой вопрос в том, будет ли какое-либо преимущество (пусть и столь незначительное) в использовании одного подхода по сравнению с другим с точки зрения: производительности? ... Сколько других СУБД они будут работать ? ... ясность изложения? ... и т. Д.