You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SQL COUNT函数是否自动排除NULL值?如何统计birthdate列NULL值?

解答你的COUNT函数疑问

没错,你猜的完全正确!COUNT(birthdate)确实会自动排除birthdate列中的NULL值,这是SQL里COUNT函数的核心特性之一:

  • 当你使用COUNT(*)时,它会统计表中所有的记录行数,不管任何列是否为NULL,所以你得到了8398这个总记录数。
  • 而当你指定具体列名(比如COUNT(birthdate))时,它只会统计该列不为NULL的记录数量,这就是为什么结果只有6152条。

统计birthdate列中NULL值的数量,有几种常用方法:

  1. 用总记录数减去非NULL记录数:
    这是最直观的方式,直接利用你已经得到的两个数值计算:

    SELECT COUNT(*) - COUNT(birthdate) AS null_birthdate_count
    FROM people;
    
  2. 使用CASE表达式配合SUM:
    这种方法逻辑更清晰,明确判断NULL并计数:

    SELECT SUM(CASE WHEN birthdate IS NULL THEN 1 ELSE 0 END) AS null_birthdate_count
    FROM people;
    
  3. 使用COUNT配合CASE:
    因为COUNT会忽略NULL,所以我们可以让CASE在birthdate为NULL时返回1,否则返回NULL,这样COUNT就只会统计那些返回1的行:

    SELECT COUNT(CASE WHEN birthdate IS NULL THEN 1 END) AS null_birthdate_count
    FROM people;
    

这几种方法都能得到你想要的NULL值数量,结果应该是8398 - 6152 = 2246条。

内容的提问来源于stack exchange,提问作者user1554264

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 10:05:45