PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

SQL:Намерете най-дългия общ низ между редовете

Ако не сте съгласни с получаването на най-често срещаната дума сред всички редове (най-често срещаната дума, която е разделена с интервал), можете да използвате:

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

Цигулка: http://sqlfiddle.com/#!15/bc803/9/0

Имайте предвид, че това намира думата apple сред 4 реда, а не 5. Това е така, защото APPLE123 е една дума, докато APPLE 123 ще бъде две думи, едната от които е APPLE, и ще се брои, но не е.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Смесване на нивата на изолация в PostgreSQL

  2. Ecto Query - Дати + Интервали на Postgres + Интерполация на заявки

  3. Rake задача за съкращаване на всички таблици в Rails 3

  4. Вземете името на собственика на DB в PostgreSql

  5. SQL заявка, използваща IN със списък, много бавна