|
|
|
|
|
|
|
作者:佚名 来源:网络 时间:2005-12-9 10:43:15 浏览: |
|
|
|
|
在数据库表tbl1中有一个字段Keywords,它是nvarchar类型,长度为1000,该字段的内容是所要分析的论文的关键字 id keywords ----------------------------------------------------------- 1 kw1;kw2;kw3 2 kw2;kw3 3 kw3;kw1;kw4 问题1。 对于在keywords字段中出现的所有关键字集合(上例中关键字集合为{kw1,kw2,kw3,kw4})中的任意一个关键字,要统计它出现的次数(也就是包含该关键字的纪录的条数),然后写到另一张表中。最后的效果就是 keywords count ------------------------- kw1 2 kw2 2 kw3 3 kw4 1
问题2。 在此基础上,要进行组合查询。也就是说在整个关键字集合中任意抽出两个关键字,统计它们在数据库表纪录中同时出现的次数。对于上题,最后效果要是: keywords count ---------------------------------- kw1;kw2 1 kw1;kw3 2 kw1;kw4 1 kw2;kw3 2 kw2;kw4 0 kw3;kw4 1
-------------------------------------------------------------------------------------- --统计示例 --为统计处理专门做的序数表 select top 1000 id=identity(int,1,1) into 序数表 from syscolumns a,syscolumns b alter table 序数表 add constraint pk_id_序数表 primary key(id) go --示例数据 create table tbl1(id int,keywords nvarchar(1000)) insert tbl1 select 1,’kw1;kw2;kw3’ union all select 2,’kw2;kw3’ union all select 3,’kw3;kw1;kw4’ go --第一种统计(计数) select keyword=substring(a.keywords,b.id,charindex(’;’,a.keywords+’;’,b.id)-b.id) ,[count]=count(distinct a.id) from tbl1 a,序数表 b where b.id<=len(a.keywords) and substring(’;’+a.keywords,b.id,1)=’;’ group by substring(a.keywords,b.id,charindex(’;’,a.keywords+’;’,b.id)-b.id) go --第二种统计(组合统计) select keyword=substring(a.keywords,b.id,charindex(’;’,a.keywords+’;’,b.id)-b.id) ,[count]=count(distinct a.id),a.id into #t from tbl1 a,序数表 b where b.id<=len(a.keywords) and substring(’;’+a.keywords,b.id,1)=’;’ group by substring(a.keywords,b.id,charindex(’;’,a.keywords+’;’,b.id)-b.id),a.id select keyword=a.keyword+’;’+b.keyword,[count]=sum(case a.id when b.id then 1 else 0 end) from #t a,#t b where a.keyword<b.keyword group by a.keyword,b.keyword order by keyword drop table #t go --删除测试环境 drop table tbl1,序数表 /*--测试结果 --统计1 keyword count ---------- -------- kw1 2 kw2 2 kw3 3 kw4 1 (所影响的行数为 4 行)
--统计2 keyword count ----------------------- ----------- kw1;kw2 1 kw1;kw3 2 kw1;kw4 1 kw2;kw3 2 kw2;kw4 0 kw3;kw4 1 (所影响的行数为 6 行) --*/ |
|
|
|
①
|
凡本网注明“来源:范文123网(范文网123)”的所有作品,版权均属于范文123网(范文网123),未经本网授权不得转载、摘编或利用其它方式使用上述作品。已经本网授权使用作品的,应在授权范围内使用,并注明“来源:范文123网”。违反上述声明者,本网将追究其相关法律责任。 |
| ② |
凡本网注明“来源:XXX(非范文123网)”的作品,均转载自其它媒体,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。 |
| ③ |
如因作品内容、版权和其它问题需要同本网联系的,请在30日内进行。 |
|
| |