我有一个数据库,其中包含文档列表及其中的单词。每行代表一个术语。我想要做的是计算一个单词出现的文件数量。
所以,鉴于以下内容:
+ doc + word +
+-------+--------+
+ a + foo +
+-------+--------+
+ a + foo +
+-------+--------+
+ a + bar +
+-------+--------+
+ b + bar +
+-------+--------+
我会得到
的结果+ word + count +
+--------+---------+
+ foo + 1 +
+--------+---------+
+ bar + 2 +
+--------+---------+
因为foo只出现在一个文档中(即使它在该文档中出现两次),并且栏出现在两个文档中。
基本上,我认为应该做的是以下查询吐出的单词的COUNT,
SELECT DISTINCT word, doc FROM table
..但我无法弄明白。任何提示?
答案 0 :(得分:5)
您实际上可以在distinct
内使用count
,例如:
select word
, count(distinct doc)
from YourTable
group by
word
答案 1 :(得分:0)
这可能是暂时的,但我猜这不是最好的方法。为什么要跟踪每个文档中的每个单词?看看Oracle Intermedia。它是为这类事物(特别是文本搜索)而构建的。