Mysql
 sql >> Database >  >> RDS >> Mysql

Più valori di testo in una colonna, è necessaria la query per trovare la parola più ripetibile

Puoi farlo unendoti a una serie di numeri prodotta che viene utilizzata per selezionare l'ennesima parola. Sfortunatamente, mysql non ha un metodo integrato per generare una serie, quindi è un po' brutto, ma eccolo qui:

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

Guarda una demo dal vivo su SQLFiddle utilizzando i tuoi dati e producendo l'output previsto.

Purtroppo, la limitazione di dover codificare in modo rigido ogni valore della serie numerica limita anche il numero di parole della colonna che verrà elaborata (in questo caso 12). Non importa se ci sono troppi numeri nella serie e puoi sempre aggiungerne altri per coprire un testo di input previsto più grande.