如何在sql中计算超过90的分数

时间:2016-01-29 16:28:54

标签: sql oracle counting

我想将得分超过90,但最终计算总行数

select g.score as score
      ,count(case when g.score>=90 then 1 else 0 end) over () as passed
from grades g

如果我的数据是

100
45
90 
100

它应该显示3,但它显示4

2 个答案:

答案 0 :(得分:2)

您要么删除ELSE部分,那么默认值为NULL而COUNT不计算NULL

select g.score as score
      ,count(case when g.score>=90 then 1 end) over () as passed
from grades g

或更改COUNT

SUM
select g.score as score
      ,SUM(case when g.score>=90 then 1 else 0 end) over () as passed
from grades g

答案 1 :(得分:2)

只需在COUNT中修改SUM即可。 COUNT计数不为空值,因此它甚至计为0; SUM只会'计算'非零值

相关问题