|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
支持多线程,充分利用CPU资源统计|字符串
在数据库表tbl1中有一个字段Keywords,它是nvarchar范例,长度为1000,该字段的内容是所要剖析的论文的关头字idkeywords-----------------------------------------------------------1kw1;kw2;kw32kw2;kw33kw3;kw1;kw4
成绩1。关于在keywords字段中呈现的一切关头字汇合(上例中关头字汇合为{kw1,kw2,kw3,kw4})中的恣意一个关头字,要统计它呈现的次数(也就是包括该关头字的记录的条数),然后写到另外一张表中。最初的效果就是keywordscount-------------------------kw12kw22kw33kw41
成绩2。在此基本上,要举行组合查询。也就是说在全部关头字汇合中恣意抽出两个关头字,统计它们在数据库表记录中同时呈现的次数。关于上题,最初效果如果:keywordscount----------------------------------kw1;kw21kw1;kw32kw1;kw41kw2;kw32kw2;kw40kw3;kw41
--------------------------------------------------------------------------------------
--统计示例
--为统计处置专门做的序数表selecttop1000id=identity(int,1,1)into序数表fromsyscolumnsa,syscolumnsbaltertable序数表addconstraintpk_id_序数表primarykey(id)go
--示例数据createtabletbl1(idint,keywordsnvarchar(1000))inserttbl1select1,kw1;kw2;kw3unionallselect2,kw2;kw3unionallselect3,kw3;kw1;kw4go
--第一种统计(计数)selectkeyword=substring(a.keywords,b.id,charindex(;,a.keywords+;,b.id)-b.id),[count]=count(distincta.id)fromtbl1a,序数表bwhereb.id<=len(a.keywords)andsubstring(;+a.keywords,b.id,1)=;groupbysubstring(a.keywords,b.id,charindex(;,a.keywords+;,b.id)-b.id)go
--第二种统计(组合统计)selectkeyword=substring(a.keywords,b.id,charindex(;,a.keywords+;,b.id)-b.id),[count]=count(distincta.id),a.idinto#tfromtbl1a,序数表bwhereb.id<=len(a.keywords)andsubstring(;+a.keywords,b.id,1)=;groupbysubstring(a.keywords,b.id,charindex(;,a.keywords+;,b.id)-b.id),a.id
selectkeyword=a.keyword+;+b.keyword,[count]=sum(casea.idwhenb.idthen1else0end)from#ta,#tbwherea.keyword<b.keywordgroupbya.keyword,b.keywordorderbykeyword
droptable#tgo
--删除测试情况droptabletbl1,序数表
/*--测试了局
--统计1keywordcount------------------kw12kw22kw33kw41
(所影响的行数为4行)
--统计2keywordcount----------------------------------kw1;kw21kw1;kw32kw1;kw41kw2;kw32kw2;kw40kw3;kw41
(所影响的行数为6行)--*/
两个到底是哪一个给出了MySQL这个名字至今依然是个迷,包括开发者在内也不知道。 |
|