SQL检查组是否包含NULL

Ant*_*and 9 sql postgresql

是否有任何函数来检查组中的列是否包含NULL,或者我将如何解决这个问题?下面的数据结构示例.

id | value
----------
1  | NULL
1  | 56
2  | 98
2  | 14
Run Code Online (Sandbox Code Playgroud)

结果:

id | value
----------
1  | 1
2  | 0
Run Code Online (Sandbox Code Playgroud)

jue*_*n d 17

尝试

select id, 
       count(*) - count(value) as null_value_count
from your_table
group by id
Run Code Online (Sandbox Code Playgroud)

SQLFiddle演示

  • @LolCoder:`count(value)`只计算非空值,`count(*)`也计算空值 (6认同)

a_h*_*ame 8

另一种不使用count(value)忽略NULL值的事实的可能性:

select id, 
       sum(case when value is null then 1 else 0 end) as null_count
from your_table
group by id;
Run Code Online (Sandbox Code Playgroud)