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

Ambil pertumbuhan rekor berjalan-total dari waktu ke waktu di mysql

Saya akhirnya menggunakan solusi yang menggabungkan variabel, berdasarkan jawaban Stack Overflow yang diposting di sini . Solusi ini tampaknya sedikit lebih fleksibel dan efisien daripada jawaban lain yang diberikan.

  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;

Perhatikan bahwa persyaratan grup menurut, pemformatan tanggal, dan rentang hanyalah spesifik dari proyek khusus saya. Bentuk yang lebih umum dari solusi ini (sesuai pertanyaan awal) adalah:

  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. Cara Menginstal dbWatch untuk Memantau Kinerja MySQL di Linux

  2. Apakah addlashes() cukup aman untuk menghindari SQL INJECTIONS?

  3. PHP Array sebagai input ke Stored Procedure

  4. Masukkan beberapa catatan dalam SQL di mana semua nilai adalah kombinasi dari rentang yang ditentukan dalam satu kueri

  5. PHP 7 RC3:Cara menginstal MySQL PDO yang hilang