统计不同的共现

时间:2010-10-23 22:43:57

标签: sql oracle

我有一个数据库,其中包含文档列表及其中的单词。每行代表一个术语。我想要做的是计算一个单词出现的文件数量。

所以,鉴于以下内容:

+  doc  +  word  +
+-------+--------+
+   a   +  foo   +
+-------+--------+
+   a   +  foo   +
+-------+--------+
+   a   +  bar   +
+-------+--------+
+   b   +  bar   +
+-------+--------+

我会得到

的结果
+  word  +  count  +
+--------+---------+
+  foo   +    1    +
+--------+---------+
+  bar   +    2    +
+--------+---------+

因为foo只出现在一个文档中(即使它在该文档中出现两次),并且栏出现在两个文档中。

基本上,我认为应该做的是以下查询吐出的单词的COUNT,

SELECT DISTINCT word, doc FROM table

..但我无法弄明白。任何提示?

2 个答案:

答案 0 :(得分:5)

您实际上可以在distinct内使用count,例如:

select  word
,       count(distinct doc)
from    YourTable
group by
        word

答案 1 :(得分:0)

这可能是暂时的,但我猜这不是最好的方法。为什么要跟踪每个文档中的每个单词?看看Oracle Intermedia。它是为这类事物(特别是文本搜索)而构建的。

相关问题