Oracle:如何计算null和非null行

Svi*_*ish 21 oracle null select grouping

我有一个表可能有两列null(以及其他一些列).我想计算有多少行,其中列a,b,两列都没有设置为null.

在一个查询中,Oracle可以实现这一点吗?或者我是否必须为每个创建一个查询?例如,不能使用group by或其他一些我可能不知道的东西?

Vin*_*rat 48

COUNT(expr)将计算expr不为null 的行数,因此您可以使用以下表达式计算空值的数量:

SELECT count(a) nb_a_not_null,
       count(b) nb_b_not_null,
       count(*) - count(a) nb_a_null,
       count(*) - count(b) nb_b_null,
       count(case when a is not null and b is not null then 1 end)nb_a_b_not_null
       count(case when a is null and b is null then 1 end) nb_a_and_b_null
  FROM my_table
Run Code Online (Sandbox Code Playgroud)


a_h*_*ame 8

像这样的东西:

SELECT sum(case 
               when a is null and b is null then 1
               else 0
           end) as both_null_count,
       sum(case
               when a is null and b is not null then 1
               else 0
           end) as only_a_is_null_count
FROM your_table

您可以将其扩展为null/not null的其他组合


tbo*_*one 6

select sum(decode(a,null,0,1)) as "NotNullCount", sum(decode(a,null,1,0)) as "NullCount"
from myTable;
Run Code Online (Sandbox Code Playgroud)

重复任意数量的字段。