如何计算列中单词的频率?

时间:2014-05-19 06:23:47

标签: sql oracle

我有一个包含20000行的表和一个名为XXX的列。 XXX中包含字符串(VARCHAR2)(包含多个单词的名称),我希望找到该名称中的第一个单词,如果出现超过30次,则显示查询。 例如,如果单词的第一个单词是 foo 并且它出现30次或 boo 出现40次,那么

Word       Count
foo         30
boo         40
这个词可以是任何东西。唯一的条件是频率。我试图用INSTR解决它,但我无法得到它。 非常感谢您的帮助

1 个答案:

答案 0 :(得分:0)

如果您的列值由分隔符分隔,例如','或'。'或空格,您可以通过查询使用组,如下所示

select count(*),substr(col,1,(instr(col,'.')-1) from tab group by  substr(col,1,(instr(col,'.')-1) order by 2;

这可能会对您有所帮助REGEXP