Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Đếm tần số xuất hiện của mỗi từ

Giải pháp này dường như thực hiện được công việc (bị đánh cắp gần như nguyên văn từ trang này ). Nó yêu cầu một auxiliary bảng, chứa đầy các số liên tiếp từ 1 đến ít nhất là số lượng các từ riêng biệt dự kiến. Điều này khá quan trọng để kiểm tra xem bảng bổ trợ có đủ lớn hay không, nếu không kết quả sẽ bị sai (không hiển thị lỗi).

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

Cách tiếp cận này kém hiệu quả nhất có thể vì nó không thể sử dụng bất kỳ chỉ mục nào.

Để thay thế, tôi sẽ sử dụng một bảng thống kê mà tôi sẽ luôn cập nhật các trình kích hoạt. Có lẽ hãy khởi tạo bảng thống kê bằng cách trên.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Django:mysql:1045, Quyền truy cập bị từ chối đối với người dùng

  2. Ngoại lệ trong chuỗi chính java.sql.SQLException:Quyền truy cập bị từ chối đối với người dùng '' @ 'localhost' (sử dụng mật khẩu:NO)

  3. Cách sắp xếp các hàng của bảng HTML được gọi từ MySQL

  4. MySQL (hay PHP?) Nhóm kết quả theo dữ liệu trường

  5. Làm thế nào để xóa nhiều hàng khỏi cơ sở dữ liệu mysql với hộp kiểm sử dụng PHP?