В качестве очень простого примера, скажем, у меня есть таблица 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
есть < 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
Я знаю, что это может показаться таким незначительным тривиальным вопросом, но мой вопрос заключается в том, будет ли какое-либо преимущество (, каким бы незначительным )использование одного подхода над другим с точки зрения :производительности? другие СУБД, в которых они будут работать?... Ясность формулировки?... и т. д.