回答

收藏

为什么未在COUNT(列名)中计算空值

技术问答 技术问答 212 人阅读 | 0 人回复 | 2023-09-14

因此,前几天我在工作中遇到了一些问题,试图计算运行导入后有多少个空值。" {3 w, y: K; A2 E; K; U+ Y9 I
所以我做了:- b2 S4 K! S8 \! Z
select COUNT(columnname) from table 0 z, e0 I) p9 I+ [
WHERE ColumnName is null
( y) c% \- \5 d7 {0 {: R! f8 `哪个不算空值…
( I; o" K* M6 O  m8 F# b$ _8 o然后我做到了& _- M. @& B, K& @
select COUNT(*) from table
+ F6 Z  Y& X4 w, w( d& o3 E+ FWHERE ColumnName is null
6 c4 ~9 D. d& r- b6 J3 O' N这给了我计数。$ P; w  S5 J) J5 [/ {7 j2 h2 C
所以,令我感到困扰的是为什么它不计算空值。
0 C& u* Z" ~# Y; |, h我看了这个问题(以及对Google的良好搜索…):" O! `1 D& A3 x( a- [% h1 l! o1 c7 [8 Y
在SQL中,count(column)和count(*)之间有什么区别?,虽然它告诉我COUNT(columnname)不计算空值,但我想确切地知道 为什么 使用这种方法不计算空值?# Y1 W: N0 z$ @1 p! c
非常感谢,詹姆斯。
# t% d9 Z. A- k) ]7 n               
1 ~+ J* Y. w+ |解决方案:
7 g0 Q) o7 e5 m" a1 g: q2 r               
& J  V3 Q; R  U+ n0 K1 l
$ E7 o9 F) Z4 _$ N8 I' N) ^2 L  S. j# b+ H% i; A# Q6 P
                COUNT 对值进行计数,因为null不是值,所以不进行计数。
4 n1 I2 z- H# X' K+ N如果要计算所有空值,可以执行以下操作:
  @" v( o* F, I. |. [+ r) qSELECT COUNT(ID) as NotNull, SUM(CASE WHEN ID IS NULL then 1 else 0 end) as NullCount
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则