1

これは比較的簡単な質問だと思いますが、午後を費やして答えを探しましたが、まだ見つかりません。そう...

国列と数値列を持つビューがあります。10未満の数字を「その他」にして、「その他」を1つの値に合計したいと思います。

例えば、

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

どんな助けでも大歓迎です。

4

5 に答える 5

1
select country, number
from your_table
where number >= 10
union
select 'Other' as country, sum(number)
from your_table
where number < 10
于 2012-11-15T17:00:30.553 に答える
0

Groupbyが必要です

 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
于 2012-11-15T17:00:06.463 に答える
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
于 2012-11-15T17:01:54.377 に答える
0

あなたは非常に近かった... 国=ケースを実行することはできません...試してください

Select
      Case when number < 10 then 'Other'
           Else country end  as finalcountry,
      Sum(number) as total number
   From
      YourTable
   Group by
      Finalcountry

私は MySQL を手元に持っていないので、最後の列名を group by として使用できるかどうかは覚えていません... case when 句を group by 句にも再コピーする必要がある場合があります。

于 2012-11-15T18:30:09.123 に答える