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

trung bình chạy trong mysql

Truy vấn của bạn là một cách để tính mức trung bình:

SELECT t.*,
       (select avg(speed) from tbl tt where tt.timestamp <= t.timestamp) as avg
FROM tbl t;

Cách thay thế là sử dụng các biến:

select t.*, (sum_speed / cnt) as running_avg_speed
from (select t.*, (@rn := @rn + 1) as cnt, (@s := @s + speed) as sum_speed
      from tbl t cross join
           (select @rn := 0, @s := 0) params
      order by timestamp
     ) t;

Chỉ mục trên tbl(timestamp) sẽ cải thiện hơn nữa hiệu suất.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cách sử dụng các chỉ mục để cải thiện hiệu suất truy vấn MySQL

  2. Biểu thức bảng phổ biến trong MySQL

  3. sự cố mysql_insert_id khi chèn dữ liệu đồng thời

  4. Gửi nhiều email với tệp đính kèm - đăng lại

  5. Làm cách nào để thêm các điều kiện trong các mô hình con phụ trong phần tiếp theo, điều này sẽ ảnh hưởng đến Mô hình mẹ của tôi trong findAndCountAll?