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

Truy xuất tổng mức tăng kỷ lục đang chạy theo thời gian trong mysql

Tôi đã kết thúc bằng cách sử dụng một giải pháp kết hợp các biến, dựa trên câu trả lời Stack Overflow được đăng tại đây . Giải pháp này có vẻ linh hoạt và hiệu quả hơn một chút so với các câu trả lời khác được cung cấp.

  SELECT u.date,
  @running_total := @running_total + u.count AS count
  FROM (
    SELECT COUNT(*) AS count, DATE_FORMAT(FROM_UNIXTIME(created), '%b %d %Y') AS date
    FROM {users}
    WHERE created >= :start_time AND created <= :end_time
    GROUP BY YEAR(FROM_UNIXTIME(created)), MONTH(FROM_UNIXTIME(created)), DAY(FROM_UNIXTIME(created))
  ) u
  JOIN (
    SELECT @running_total := u2.starting_total
    FROM (
      SELECT COUNT(*) as starting_total
      FROM {users}
      WHERE created < :start_time
    ) u2
  ) initialize;

Lưu ý rằng các yêu cầu về nhóm theo, định dạng ngày và phạm vi chỉ là các chi tiết cụ thể của dự án cụ thể của tôi. Một dạng chung chung hơn của giải pháp này (theo câu hỏi ban đầu) sẽ là:

  SELECT u.date,
  @running_total := @running_total + u.count AS count
  FROM (
    SELECT COUNT(*) AS count, DATE(FROM_UNIXTIME(created)) AS date
    FROM {users}
    GROUP BY date
  ) u
  JOIN (
    SELECT @running_total := 0
  ) initialize;


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL group_concat với mệnh đề where

  2. PHP 7 không thể tìm thấy MySQLi

  3. Cho phép tất cả các kết nối từ xa, MySQL

  4. Điền trường đầu vào dựa trên lựa chọn menu thả xuống với Javascript

  5. Cách nhập cơ sở dữ liệu bằng phpMyAdmin