sql >> Base de Datos >  >> RDS >> Mysql

Múltiples valores de texto en una columna, necesita la consulta para encontrar la palabra más repetible

Puedes hacerlo uniéndote a una serie de números manufacturados que se usa para elegir la palabra n. Desafortunadamente, mysql no tiene un método integrado para generar una serie, por lo que es un poco feo, pero aquí 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

Vea una demostración en vivo en SQLFiddle usando sus datos y produciendo el resultado esperado.

Lamentablemente, la limitación de tener que codificar todos los valores de la serie numérica también limita el número de palabras de la columna que se procesará (en este caso, 12). No importa si hay demasiados números en la serie, y siempre puede agregar más para cubrir un texto de entrada esperado más grande.