считать категории значений - PullRequest
0 голосов
/ 19 мая 2018

У меня есть int значения v >= 0 в столбце NULL, и я хотел бы подсчитать количество вхождений Null, 0, 1 и 2+ в столбце, как это сделать эффективно?

1 Ответ

0 голосов
/ 19 мая 2018

Один метод - group by:

select (case when col in (0, 1) then cast(col as varchar(255))
             else '2+'
        end) as grp, count(*)
from t
group by (case when col in (0, 1) then cast(col as varchar(255))
               else '2+'
          end)
order by min(col);

Точный синтаксис для cast() может зависеть от базы данных.Это также предполагает, что все значения неотрицательны.

Вы также можете поместить счетчики в разные столбцы:

select sum(case when val = 0 then 1 else 0 end) as cnt_0,
       sum(case when val = 1 then 1 else 0 end) as cnt_1,
       sum(case when val >= 2 then 1 else 0 end) as cnt_2pl
from t;
...