我试过这个,但找不到类似的东西。大多数问题都是关于在分组语句中使用条件。
我有一个包含'subject'和'content'列的表。我想在'内容'中计算银行名称的实例。
如果我执行以下操作,我会得到我的期望:每条记录都有一行,有些是“BofA”,有些是“USAA”,大多数是“其他”。
select
case
when content like '%bank of america%' then "BofA"
when content like '%usaa%' then "USAA"
else "Other"
end as 'FI'
from topics
结果如下:
FI
Other
Other
BofA
Other
Other
USAA
Other
...
好的,好的。但是如果我尝试按FI进行count()和分组:
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(*)
Other | 43203
我想要的是这样的:
FI | count(*)
BofA | 1298
USAA | 701
Other | 41134
我无法弄清楚我做错了什么。我知道我可以通过几种不同的方式做到这一点,但看起来这应该是有效的......我也对其他方法持开放态度。任何帮助表示赞赏。
答案 0 :(得分: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