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

MySQLの期間によるグループ化の結果

    テーブルに関する情報がほとんどない場合、これは基本的なアイデアにすぎませんが、次のようなことができます。-

    SELECT COUNT(*)
    FROM
    (
        SELECT a.TimeStamp AS ThisTimeStamp, MIN(b.TimeStamp) AS NextTimeStamp
        FROM SomeTable a
        INNER JOIN SomeTable b
        ON a.TimeStamp < b.TimeStamp
        GROUP BY a.TimeStamp
    ) Sub1
    WHERE Sub1.ThisTimeStamp < (Sub1.NextTimeStamp - 600)
    

    すべてのタイムスタンプを取得し、それより大きい他のすべてのタイムスタンプと結合し、MINを使用して次に大きいタイムスタンプに絞り込みます。次に、その中から、差が600秒未満のカウントを選択します(UNIXタイムスタンプを想定)。

    編集-ユーザーのイベントで10分以上のギャップを確保したい場合は、次のようにします。-

    SELECT COUNT(*)
    FROM
    (
        SELECT a.user_id, a.TimeStamp AS ThisTimeStamp, MIN(b.TimeStamp) AS NextTimeStamp
        FROM SomeTable a
        INNER JOIN SomeTable b
        ON a.TimeStamp < b.TimeStamp
        AND a.user_id = b.user_id
        GROUP BY a.user_id, a.TimeStamp
    ) Sub1
    WHERE Sub1.ThisTimeStamp < (Sub1.NextTimeStamp - 600)
    



    1. MySQL-列にNULL値を挿入できませんが、デフォルト値を指定していますか?

    2. MySQL5.6でポリゴン内のLong/Latを検索

    3. MariaDB JSON_QUOTE()の説明

    4. WindowsでMySQLのルートパスワードをリセットする