选择count(*)不返回SQLite中结果为0的行?

时间:2013-05-03 09:45:34

标签: sql sqlite select count

以下是示例表:

A      |     Column1      |      Column2
1               5                    8
1               3                    2
2               6                    9
2               2                    5
3               1                    3

这是我的问题:

Select A,count(*) as C from myTable where Column1 > 3 group by A

结果应为:

A     |     C
1           1
2           1
3           0

但它给了我这个排除所有0行的结果:

A     |     C
1           1
2           1

我想在where子句中包含不符合条件的行。

我可以做到吗?

2 个答案:

答案 0 :(得分:2)

WHERE子句导致A = 3不在列表中,因为它在记录聚合之前过滤行。

SELECT  A,
        COUNT(CASE WHEN Column1 > 3 THEN 1 END) TotalCount
FROM    myTable
GROUP   BY A

输出

╔═══╦════════════╗
║ A ║ TotalCount ║
╠═══╬════════════╣
║ 1 ║          1 ║
║ 2 ║          1 ║
║ 3 ║          0 ║
╚═══╩════════════╝

答案 1 :(得分:1)

你的where子句消除了它们。尝试类似:

Select A,count(case when Column1 > 3 then 1 else null end) as C from myTable group by A