想象一下,我有一个如下表:
ID Score someOtherColumns
1 1 ....
2 1 .....
3 4 ....
5 2 ....
6 1 ....
其中score的整数值可以在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表达式”
答案 0 :(得分:2)
将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
通过这种方式,您无需重复case表达式,即不易出错。
答案 1 :(得分:1)
您需要使用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);