在SQL中总结Case查询的结果

时间:2012-11-15 16:56:44

标签: sql case

我认为这是一个相对简单的问题,但我花了整个下午寻找答案,但还是找不到。所以......

我有一个国家/地区列和数字列的视图。我想将任何数字小于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

非常感谢任何帮助。

5 个答案:

答案 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子句中太