Nếu bạn ổn với việc nhận được từ xuất hiện phổ biến nhất trong số tất cả các hàng (từ phổ biến nhất được phân tách bằng dấu cách), bạn có thể sử dụng:
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
Chơi đùa: http://sqlfiddle.com/#!15/bc803/9/0
Lưu ý rằng điều này tìm thấy từ apple
trong số 4 hàng, không phải 5. Điều này là do APPLE123
là một từ, trong khi APPLE 123
sẽ là hai từ, một trong số đó là APPLE, và sẽ được tính, nhưng nó không.