【问题标题】:Select count(*) doesn't return rows which have the results of 0 in SQLite?Select count(*) 不返回 SQLite 中结果为 0 的行?
【发布时间】:2013-04-27 16:27:18
【问题描述】:

这是示例表:

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 子句中包含不满足条件的行。

我能做到吗?

【问题讨论】:

    标签: sql sqlite select count


    【解决方案1】:

    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 ║
    ╚═══╩════════════╝
    

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2016-10-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-10-05
        • 2022-01-07
        • 2021-04-12
        相关资源
        最近更新 更多