sql >> Databasteknik >  >> RDS >> PostgreSQL

SQL:Hitta längsta gemensamma sträng mellan rader

Om du är okej med att få det vanligaste ordet bland alla rader (det vanligaste ordet som separeras med ett mellanslag), kan du använda:

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

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

Observera att detta hittar ordet apple bland 4 rader, inte 5. Detta beror på att APPLE123 är ett ord, medan APPLE 123 skulle vara två ord, varav ett är APPLE, och skulle räknas, men det gör det inte.



  1. Hur kan jag söka i en tabell med kommaseparerade värden?

  2. Undersöker prestandan av en adhoc-arbetsbelastning

  3. MySQL-replikering:Felaktiga transaktioner i GTID-baserad replikering

  4. Hur man kombinerar IN-operatör med LIKE-skick (eller bästa sättet att få jämförbara resultat)