我认为这是一个相对简单的问题,但我花了整个下午寻找答案,但还是找不到。所以......
我有一个国家/地区列和数字列的视图。我想将任何数字小于10'其他',然后将'其他'加到一个值中。
例如,
AR 10
AT 7
AU 11
BB 2
BE 23
BY 1
CL 2
我使用CASE如下:
select country = case
when number < 10 then 'Other'
else country
end,
number
from ...
这会将数字列中少于10的国家/地区值替换为其他值,但我无法确定如何对它们求和。我想最终得到一个表/视图,如下所示:
AR 10
AU 11
BE 23
Other 12
非常感谢任何帮助。
答案 0 :(得分:3)
只需按案例陈述分组:
select
country = case
when number < 10 then 'Other'
else country
end,
sum(number)
from ...
group by
case
when number < 10 then 'Other'
else country
end
答案 1 :(得分:1)
select country, number
from your_table
where number >= 10
union
select 'Other' as country, sum(number)
from your_table
where number < 10
答案 2 :(得分:0)
您需要一个分组
select country = case
when number < 10 then 'Other'
else country
end,
sum(number)
from ...
group by
case when number < 10 then 'Other' else country end
答案 3 :(得分:0)
您可以将其包装到派生表中,以避免重复CASE语句。
select country,
sum(number) as number
from (
select case
when number < 10 then 'Other'
else country
end as country,
number
from ...
) t
group by country
答案 4 :(得分:0)
你非常接近......你不能做国家=案例......试试
Select
Case when number < 10 then 'Other'
Else country end as finalcountry,
Sum(number) as total number
From
YourTable
Group by
Finalcountry
由于我没有方便的MySQL,我不记得它是否允许你将最终列名作为一个组使用...你可能必须将case when子句重新复制到group by子句中太