PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

SQL : Rechercher la chaîne commune la plus longue entre les lignes

Si vous êtes d'accord pour obtenir le mot le plus courant parmi toutes les lignes (le mot le plus courant qui est séparé par un espace), vous pouvez utiliser :

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

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

Notez que cela trouve le mot apple parmi 4 lignes, et non 5. C'est parce que APPLE123 est un mot, alors que APPLE 123 serait deux mots, dont l'un est APPLE, et compterait, mais ce n'est pas le cas.