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

SQL:Find den længste fælles streng mellem rækker

Hvis du er okay med at få det mest almindelige ord blandt alle rækker (det mest almindelige ord, der er adskilt af et mellemrum), kan du bruge:

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

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

Bemærk, at dette finder ordet apple blandt 4 rækker, ikke 5. Dette skyldes APPLE123 er ét ord, hvorimod APPLE 123 ville være to ord, hvoraf det ene er APPLE, og ville tælle, men det gør det ikke.



  1. Oracle 12c Apex 4.2 ORA-24247 netværksadgang nægtet af adgangskontrolliste (ACL)

  2. Slet indlæg og kommentarer fra Action Scheduler

  3. Oracle SQL-udvikler:Fejl - Test mislykkedes:Netværksadapteren kunne ikke etablere forbindelsen?

  4. Håndtering af EXCEPTION og returner resultat fra funktion