SQL группа с условием - PullRequest
       3

SQL группа с условием

0 голосов
/ 24 апреля 2019

Представьте, что у меня есть таблица, подобная приведенной ниже:

ID    Score    someOtherColumns
 1        1    ....
 2        1    .....
 3        4    ....
 5        2    ....
 6        1    ....

, где счет может иметь целочисленное значение от 0 до 100. Я хочу сгруппировать по счету, что можно сделать с помощью чего-то вроде:

Select score, count(*) from myTable group by score;

Как добавить условие в группу, если я хочу сгруппировать баллы> 20 в одну группу?

Я пытался:

Select score, count(*) from myTable
group by 
  case 
    when score >19 then 20
    else score
  end;

, но получить"не выражение GROUP BY"

Ответы [ 2 ]

2 голосов
/ 24 апреля 2019

Оберните часть case как производную таблицу (подзапрос).GROUP BY его результат.

select score, count(*)
from
(
    select case 
             when score >19 then 20
             else score
           end as score
    from myTable
) dt
group by score

Таким образом, вам не нужно повторять регистр, т.е. меньше подвержен ошибкам.

1 голос
/ 24 апреля 2019

Вам нужно повторить то же выражение с оператором SELECT:

Select (case when score > 19 then 20 else score end) as score, count(*) 
from myTable
group by (case when score > 19 then 20 else score end);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...