【发布时间】:2012-07-05 08:28:08
【问题描述】:
作为一个非常简单的例子,假设我有一个表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
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
我知道这似乎是一件微不足道的小事,但我的问题是,使用一种方法相对于另一种方法是否有任何优势(尽管如此微不足道):性能?......他们有多少其他 DBMS可以工作吗?...陈述的清晰性?...等等。
【问题讨论】:
-
“我想得到...的计数” 问就是回答? :-)
标签: sql count query-optimization