我需要计算一个单词出现的不同行数

时间:2014-10-15 10:43:01

标签: postgresql count

到目前为止我已经

SELECT
    word, count(*)
FROM
    (SELECT
            regexp_split_to_table(ColDescription, '\s') as word
    FROM tblCollection
    ) a
GROUP BY word
ORDER BY count(*) desc

其中列出了所有单词以及它们在“描述”列中出现的次数。

我需要的是一种方法,可以显示一个单词连续多少次一次。

例如,如果我的数据是:

hello hello test 
hello test test test
test hi

它会显示

word    count   # of rows it appears in
hello     3        2
test      5        3
hi        1        1

我非常喜欢数据库的初学者,感谢任何帮助!

样本表:

CREATE TABLE tblCollection ( ColDescription varchar(500) NOT NULL PRIMARY KEY);

示例数据是:

"hello hello test"
"hello test test test"
"test hi"

每个字符串都是它自己的行。

1 个答案:

答案 0 :(得分:2)

主要障碍是您的子查询不会保留有关其找到每个单词实例的位置的任何信息。这很容易解决:

SELECT
  regexp_split_to_table(ColDescription, '\s') as word,
  ColDescription
FROM tblCollection

现在您已经将源字段与每个单词一起列出,这只是计算它们的问题:

SELECT
  word, count(*), count(distinct ColDescription)
FROM
...