PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

SQL:encontre a string comum mais longa entre as linhas


Se você concorda em obter a palavra que aparece com mais frequência entre todas as linhas (a palavra mais comum separada por um espaço), você pode usar:
select word, count(distinct rn) as num_rows
from(
select unnest(string_to_array(col, ' ')) as word,
       row_number() over(order by col) as rn
from tbl
) x
group by word
order by num_rows desc

Violino: http://sqlfiddle.com/#!15/bc803/9/0

Observe que isso encontra a palavra apple entre 4 linhas, não 5. Isso ocorre porque APPLE123 é uma palavra, enquanto APPLE 123 seriam duas palavras, uma das quais é APPLE, e contaria, mas não conta.