sql统计的特定字符串出现次数

我有一个表格如下idD1D2D31WSQWSSQ2WQSQ3SQWSQ现在我想分别统计D1中W,S,Q出现的次数,D2中W,S,Q出现的次数,,D3中W,S,Q出现的次数... 我有一个表格如下
id D1 D2 D3
1 WSQ WS SQ
2 WQ S Q
3 S Q WSQ
现在我想分别统计D1中W,S,Q出现的次数,D2中W,S,Q出现的次数,,D3中W,S,Q出现的次数
代码稍微写详细点 谢谢
展开
 我来答
aisiwenwen
2010-11-10 · TA获得超过600个赞
知道小有建树答主
回答量:229
采纳率:0%
帮助的人:203万
展开全部
假设表名是t
select t.d1,count(*) from t where d1 like '%W%' group by t.d1 得出D1列W的出现次数
select t.d1,count(*) from t where d1 like '%S%' group by t.d1 得出D1列S的出现次数
select t.d1,count(*) from t where d1 like '%Q%' group by t.d1 得出D1列Q的出现次数
剩下D2,D3使用同法
srzyhead
2010-11-11 · TA获得超过167个赞
知道小有建树答主
回答量:89
采纳率:0%
帮助的人:0
展开全部
楼上两位写的没有考虑到WWSQ这种有两个W的。
我又写了一个,oracle10gr2已验证
数据如下
1 WWSQ WS SQ
2 WQ S Q
3 S Q WSQ
----------------------------------------------------------
select t2.vf,
sum((length(t1.D1) - length(replace(t1.D1, t2.vf))) / length(t2.vf)) D1,
sum((length(t1.D2) - length(replace(t1.D2, t2.vf))) / length(t2.vf)) D2,
sum((length(t1.D3) - length(replace(t1.D3, t2.vf))) / length(t2.vf)) D3
from tmp1 t1,
(select 'W' vf
from dual
union all
select 'S' vf
from dual
union all
select 'Q' vf from dual) t2
group by t2.vf
----------------------------------
结果为
W 3 1 1
Q 2 0 2
S 1 1 2
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
jyl_19
推荐于2016-11-29 · TA获得超过1002个赞
知道小有建树答主
回答量:708
采纳率:0%
帮助的人:1048万
展开全部
select t2.vf,
D1=count(case when t1.D1 like '%'+t2.vf+'%' then 1 else null end),
D2=count(case when t1.D2 like '%'+t2.vf+'%' then 1 else null end),
D3=count(case when t1.D3 like '%'+t2.vf+'%' then 1 else null end) from table1 t1,(select vf='W' union select 'S' union select 'Q') t2
group by t2.vf

这样清楚点。
vf D1 D2 D3
----------------------------------------
Q 2 1 3
S 2 2 2
W 2 1 1
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
莱煦明彭祖
2020-03-12 · TA获得超过1181个赞
知道小有建树答主
回答量:1616
采纳率:100%
帮助的人:8.1万
展开全部
建个临时表(字符名、字符个数两个字段),然后切割字符串,循环字符串中的字符和个数插入临时表。
关于字符个数计算:
在循环中用select
len('字符串')-len(replace('字符串','字符',''))
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式