Mysql
 sql >> база данни >  >> RDS >> Mysql

Проверка за максимална продължителност на последователни дни, които отговарят на определено условие

Това решение изглежда работи доста добре, стига да има съставен индекс на user_id и beverages_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. Дата и час в PHP скрипт

  2. Как да инсталирате Adminer в собствено приложение

  3. Как да проектираме йерархична ролева система за контрол на достъпа

  4. Импортиране на CSV в MySQL с различен формат за дата

  5. MySQL НЕ В заявката