Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Hitung frekuensi setiap kata

Solusi ini tampaknya berhasil (dicuri hampir kata demi kata dari halaman ini ). Ini membutuhkan auxiliary tabel, diisi dengan nomor urut dari 1 hingga setidaknya jumlah kata berbeda yang diharapkan. Ini cukup penting untuk memeriksa apakah tabel bantu cukup besar, atau hasilnya akan salah (tidak menunjukkan kesalahan).

SELECT
    SUBSTRING_INDEX(SUBSTRING_INDEX(maintable.comment, ' ', auxiliary.id), ' ', -1) AS word,
    COUNT(*) AS frequency
FROM maintable 
JOIN auxiliary ON
    LENGTH(comment)>0 AND SUBSTRING_INDEX(SUBSTRING_INDEX(comment, ' ', auxiliary.id), ' ', -1)
    <> SUBSTRING_INDEX(SUBSTRING_INDEX(comment, ' ', auxiliary.id-1), ' ', -1)
GROUP BY word
HAVING word <> ' '
ORDER BY frequency DESC;

SQL Fiddle

Pendekatan ini sangat tidak efisien, karena tidak dapat menggunakan indeks apa pun.

Sebagai alternatif, saya akan menggunakan tabel statistik yang selalu saya perbarui dengan pemicu. Mungkin inisialisasi tabel statistik dengan yang di atas.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Menggunakan Jquery Ajax untuk mengambil data dari Mysql

  2. Pilih pengguna dari satu tabel hanya jika tidak di tabel lain

  3. Skema pengkodean emoji terbaik

  4. bagaimana cara mengabaikan backtick di codeigniter saat menggunakan catatan aktif? saya perlu memesan berdasarkan kasus

  5. Perbedaan MySQL dan SQLite dalam SQL