2011-07-28 5 views
0

これを検索しようとしましたが、類似するものは見つかりませんでした。ほとんどの質問は、文ごとに条件文を使用することに関するものです。MySQL - 条件があるカラムをGROUP BYする方法

私は 'subject'と 'content'という列のテーブルを持っています。私は 'コンテンツ'の銀行名のインスタンスを数えたいと思う。

もし私が次のようなことをすれば、各レコードの行、 "BofA"、 "USAA"、そして "その他"のようなものが得られます。

FI 
Other 
Other 
BofA 
Other 
Other 
USAA 
Other 
... 

罰金、OK:

select 
case 
    when content like '%bank of america%' then "BofA" 
    when content like '%usaa%' then "USAA" 
    else "Other" 
end as 'FI' 
from topics 

結果は次のようなものです。しかし、私は、カウントを(実行しようとする場合)とFIでグループ:

select 
case 
    when content like '%bank of america%' then "BofA" 
    when content like '%usaa%' then "USAA" 
    else "Other" 
end as 'FI', 
count(*) 

from topics 

group by 'FI' 

結果:

FI  | count(*) 
BofA | 1298 
USAA | 701 
Other | 41134 

私はできません:

FI  | count(*) 
Other | 43203 

私が欲しいものは、このようなものです私が間違っていることを理解する。おそらくこれをいくつかの方法で行うことができるのは分かっていますが、これはうまくいくはずです...私は他の方法にもオープンしています。どんな助けもありがとうございます。

答えて

0

これはうまくいくようです。ただし、これを試すことができます:

select fi,count(*) from 
(
    select 
    case 
    when content like '%bank of america%' then "BofA" 
    when content like '%usaa%' then "USAA" 
    else "Other" 
    end as fi 
    from topics 
) 
group by fi 
+0

テーブルエイリアスは必要ありませんか?すなわち...トピックから)** x **グループby fi – Bohemian

+0

ありがとうございました。私はテーブルにエイリアスを与えなければならなかった。 –

+0

誰もが知っていれば、なぜオリジナルがうまくいかなかったのか、私はまだ知りたいです... –

関連する問題