PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

SQL:Finden Sie die längste gemeinsame Zeichenfolge zwischen Zeilen

Wenn Sie damit einverstanden sind, das am häufigsten vorkommende Wort in allen Zeilen zu erhalten (das häufigste Wort, das durch ein Leerzeichen getrennt ist), können Sie Folgendes verwenden:

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

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

Beachten Sie, dass dies das Wort apple findet unter 4 Zeilen, nicht 5. Das liegt daran, dass APPLE123 ist ein Wort, während APPLE 123 wären zwei Wörter, von denen eines APPLE ist, und würden zählen, aber das tut es nicht.