PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

SQL:Znajdź najdłuższy wspólny ciąg między wierszami

Jeśli nie masz nic przeciwko uzyskaniu najczęściej występującego słowa ze wszystkich wierszy (najczęściej występującego słowa oddzielonego spacją), możesz użyć:

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

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

Zauważ, że to powoduje znalezienie słowa apple wśród 4 wierszy, a nie 5. To dlatego, że APPLE123 to jedno słowo, podczas gdy APPLE 123 byłyby dwoma słowami, z których jedno to JABŁKO, i mogłoby się liczyć, ale tak się nie stanie.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak AT TIME ZONE działa w PostgreSQL

  2. Używając razem npgsql 12 i ef 6 - czy komuś się to udało?

  3. Moje ulubione zapytania PostgreSQL i ich znaczenie

  4. Zdobądź pierwszy dzień miesiąca w PostgreSQL

  5. Brak buforowania planu wykonania dla dynamicznego SQL w PostgreSQL 9.4?