PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

SQL:trova la stringa comune più lunga tra le righe

Se sei d'accordo con la parola che appare più comunemente tra tutte le righe (la parola più comune separata da uno spazio), puoi usare:

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

Nota che questo trova la parola apple tra 4 righe, non 5. Questo perché APPLE123 è una parola, mentre APPLE 123 sarebbero due parole, una delle quali è APPLE, e conterebbero, ma non è così.