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

如何在单条SQL查询中统计某字段的Null与非Null记录数?

优雅统计字段Null/非Null记录数的SQL方案

你现在的查询需要手动计算非Null记录数,确实不够高效,这里给你两种更简洁的单查询方案,直接一次性输出总数、已更新(非Null)、未更新(Null)的统计结果:

方案一:利用COUNT函数特性

COUNT(*)会统计所有行,COUNT(列名)会自动忽略该列值为Null的行,刚好可以用来快速计算:

SELECT
  COUNT(*) AS Total,
  COUNT(Updated) AS Updated, -- 直接得到Updated非Null的记录数
  COUNT(*) - COUNT(Updated) AS NotUpdated -- 总数减去非Null数就是Null的数量
FROM BatchHeaders;

方案二:用CASE表达式精准统计

如果需要更直观的逻辑控制,用CASE配合SUM也能实现,可读性更强:

SELECT
  COUNT(*) AS Total,
  SUM(CASE WHEN Updated IS NOT NULL THEN 1 ELSE 0 END) AS Updated,
  SUM(CASE WHEN Updated IS NULL THEN 1 ELSE 0 END) AS NotUpdated
FROM BatchHeaders;

这两种方案都不需要CTE和表连接,单表扫描一次就能出结果,性能和可读性都比你原来的方法好,而且直接拿到所有需要的统计值,不用再手动计算。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 18:53:15