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

Memeriksa panjang maksimum hari berturut-turut yang memenuhi kondisi tertentu

Solusi ini tampaknya berkinerja cukup baik selama ada indeks komposit pada users_id dan drinks_id -

SELECT *
FROM (
    SELECT t.*, IF(@prev + INTERVAL 1 DAY = t.d, @c := @c + 1, @c := 1) AS streak, @prev := t.d
    FROM (
        SELECT DATE(timestamp) AS d, COUNT(*) AS n
        FROM beverages_log
        WHERE users_id = 1
        AND beverages_id = 1
        GROUP BY DATE(timestamp)
        HAVING COUNT(*) >= 5
    ) AS t
    INNER JOIN (SELECT @prev := NULL, @c := 1) AS vars
) AS t
ORDER BY streak DESC LIMIT 1;


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bagaimana cara memeriksa apakah koneksi MySQL dienkripsi SSL?

  2. Menangani Transaksi Di MySQL

  3. Bagaimana cara menyimpan beberapa opsi dalam satu tabel?

  4. Bidang datetime MySQL dan waktu musim panas -- bagaimana cara mereferensikan jam tambahan?

  5. Pencarian MySQL dalam daftar koma