sql >> データベース >  >> RDS >> Mysql

特定の条件を満たす連続日数の最大値をチェックする

    このソリューションは、users_idとbrinkathers_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. 関係に基づいて1つのレコードに対して複数のレコードを取得するにはどうすればよいですか?

    2. SpringのOracleデータソース構成

    3. 2SQLiteのサンプルデータベース

    4. 結合されたサブクエリの外部選択列の値?