Imagine i have a table like below:
x
ID Score someOtherColumns
1 1 .
2 1 ..
3 4 .
5 2 .
6 1 .
where score can have an intger value between 0 and 100. I want to group by score, which can be done with something like:
Select score, count(*) from myTable group by score;
How do I add a condition in the group by if I want to group scores > 20 in one group?
I have tried:
Select score, count(*) from myTable
group by
case
when score >19 then 20
else score
end;
but get a “not a GROUP BY expression”
Advertisement
Answer
You need to repeat the same expression with SELECT
statement :
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);