Как я считаю счет более 90 в sql
Я хочу посчитать более 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 ответа
Просто отредактируйте COUNT
в SUM
, COUNT
считает не нулевые значения, поэтому он даже считает 0; SUM
будет только "считать" ненулевые значения
Вы либо удалите 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