|
导读数据库,简而言之可视为电子化的文件柜——存储电子文件的处所,用户可以对文件中的数据进行新增、截取、更新、删除等操作。所谓“数据库”是以一定方式储存在一起、能与多个用户共享、具有尽可能小的冗余度、与应... 数据库,简而言之可视为电子化的文件柜——存储电子文件的处所,用户可以对文件中的数据进行新增、截取、更新、删除等操作。所谓“数据库”是以一定方式储存在一起、能与多个用户共享、具有尽可能小的冗余度、与应用程序彼此独立的数据集合。 在数据库表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 行) --*/ 全新的路由器不仅让你更稳定快速地连接无线网络,更可以让家中的智能设备连接在一起。 |
温馨提示:喜欢本站的话,请收藏一下本站!