Подсчет различных случаев - PullRequest
2 голосов
/ 24 октября 2010

У меня есть база данных со списком документов и словами внутри них. Каждая строка представляет термин. Что я хочу сделать, так это подсчитать, сколько документов содержит слово.

Итак, учитывая следующее:

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

Я бы получил результат

+  word  +  count  +
+--------+---------+
+  foo   +    1    +
+--------+---------+
+  bar   +    2    +
+--------+---------+

Поскольку foo встречается только в одном документе (даже если он встречается дважды в этом документе), а полоса встречается в двух документах.

По сути, то, что (думаю) я должен сделать, это СЧЕТ слов, которые выдает следующий запрос,

SELECT DISTINCT word, doc FROM table

.. но я не могу понять это. Есть намеки?

Ответы [ 2 ]

5 голосов
/ 24 октября 2010

Вы можете использовать distinct внутри count, например:

select  word
,       count(distinct doc)
from    YourTable
group by
        word
0 голосов
/ 24 октября 2010

Это может быть в стороне, но я предполагаю, что это не лучший способ сделать это.Почему вы отслеживаете каждое слово в каждом документе?Посмотрите на Oracle Intermedia.Он был создан для такого рода вещей (в частности, для текстового поиска).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...