sql count未完成程序的行

5cnsuln7  于 2021-07-24  发布在  Java
关注(0)|答案(2)|浏览(265)

需要一些帮助,不知道这个问题的关键字上网搜索
我想数一些还没完成的程序

当progres有step3时,它不被计算在内
这个例子的预期结果是2,我试图单独做,但它不起作用
需要帮助,谢谢

zmeyuzjn

zmeyuzjn1#

一种方法使用 count(distinct) 和过滤器 where 条款:

select count(distinct progres)
from t
where not exists (select 1 from t t2 where t2.progres = t.progres and t2.step = 'step3');

另一种有趣的方式使用了一种不同:

select count(distinct progres) - count(distinct case when step = 'step3' then progres end)
from t;

如果 'step3' 每次最多出现一次 progres ,可以简化为:

select count(distinct progres) - sum(step = 'step3')
from t;

或使用集合操作:

select count(*)
from ((select progres from t)
      except  -- removes duplicates
      (select progres from t where step = 'step3')
     ) t;
41ik7eoe

41ik7eoe2#

你可以做:

select
  count(distinct progress)
  -
  (select count(*) from t where step = 'step3')
from t

相关问题