Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Vários valores de texto em uma coluna, precisam da consulta para encontrar a palavra mais repetível


Você pode fazer isso juntando-se a uma série numérica fabricada que é usada para escolher a enésima palavra. Infelizmente, o mysql não tem um método embutido para gerar uma série, então é um pouco feio, mas aqui está:
select
  substring_index(substring_index(title, ' ', num), ' ', -1) word,
  count(*) count
from job j
join (select 1 num union select 2 union select 3 union select 4 union select 5 union select 6 union select 7 union select 8 union select 9 union select 10 union select 11 union select 12) n
on length(title) >= length(replace(title, ' ', '')) + num - 1
group by 1
order by 2 desc

Veja uma demonstração ao vivo no SQLFiddle usando seus dados e produzindo sua saída esperada.

Infelizmente, a limitação de ter que codificar cada valor da série numérica também limita o número de palavras da coluna que será processada (neste caso 12). Não importa se houver muitos números na série, e você sempre pode adicionar mais para cobrir um texto de entrada esperado maior.