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

最初と最後の出現でグループ化

    次のクエリを使用できます:

    SELECT MIN(current_day) AS start_day, 
           MAX(current_day) AS stop_day, 
           browser
    FROM (
       SELECT current_day, browser,
              @grp := IF(@br = browser, @grp,
                         IF(@br := browser, @grp+1, @grp+1)) AS grp
       FROM mytable 
       CROSS JOIN (SELECT @grp := 0, @br := '') AS vars
       ORDER BY current_day) AS t
    GROUP BY browser, grp
    

    上記のクエリは、同じbrowserを持つ連続したレコードのアイランドを識別するために変数を使用します 価値。ブラウザごとに1行を返します。同じサブクエリを2回繰り返し、UNIONを使用する必要があります。 2つを取得したい場合 最小/最大の日付ごとに別々の行。

    デモはこちら



    1. phpを使用してmysqlクエリが結果を返さない(レコードが見つかりません)かどうかを確認する方法は?

    2. MySQLでvarcharフィールドを数値で並べ替える

    3. MySQL8.0-クライアントはサーバーから要求された認証プロトコルをサポートしていません。 MySQLクライアントのアップグレードを検討してください

    4. JPA / Hibernateアノテーションを使用してMySQLchar(n)列をインスタンス変数にマップするにはどうすればよいですか?