Hvis du er okay med at få det mest almindelige ord blandt alle rækker (det mest almindelige ord, der er adskilt af et mellemrum), kan du bruge:
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
Violin: http://sqlfiddle.com/#!15/bc803/9/0
Bemærk, at dette finder ordet apple
blandt 4 rækker, ikke 5. Dette skyldes APPLE123
er ét ord, hvorimod APPLE 123
ville være to ord, hvoraf det ene er APPLE, og ville tælle, men det gør det ikke.