sql >> Base de Datos >  >> RDS >> PostgreSQL

SQL:encuentre la cadena común más larga entre filas

Si está de acuerdo con obtener la palabra que aparece con más frecuencia entre todas las filas (la palabra más común que está separada por un espacio), puede 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

Violín: http://sqlfiddle.com/#!15/bc803/9/0

Tenga en cuenta que esto encuentra la palabra apple entre 4 filas, no 5. Esto se debe a que APPLE123 es una palabra, mientras que APPLE 123 serían dos palabras, una de las cuales es MANZANA, y contaría, pero no cuenta.