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

Kiểm tra độ dài tối đa của những ngày liên tiếp đáp ứng điều kiện cụ thể

Giải pháp này có vẻ hoạt động khá tốt miễn là có một chỉ mục tổng hợp trên users_id và beceptions_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. mysql:select max (score) không trả về dữ liệu hàng có liên quan

  2. In xếp hạng từ tổng trong PHP &MySQL trong 1,1,3,4, v.v. Thứ tự

  3. Không thể khởi động MySQL, cổng 3306 bận

  4. mã php để kiểm tra pdo có sẵn không?

  5. WooCommerce:Tìm các sản phẩm trong cơ sở dữ liệu