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

MySQLは、連続する同一の結果に対して最初と最後のレコードを返します

    これにアプローチする最も簡単な方法は変数を使用することです。最も簡単なアプローチは、2つの変数を追加することだと思います。1つは「上」の数、もう1つは任意の行までの「下」の数です。与えられたアップのシーケンスは、先行する「ダウン」の数に対して一定の値を持ち、その逆も同様です。このロジックは集計に使用できます。

    結果のクエリは次のとおりです。

    select result, min(time_stamp) as start_time, max(time_stamp) as end_time
    from (select r.*,
                 (@ups := @ups + (result = 'up')) as ups,
                 (@downs := @downs + (result = 'down')) as downs
          from results r cross join
               (select @ups := 0, @downs := 0) vars
          where service_id = 1
          order by time_stamp
         ) r
    group by result, (case when result = 'up' then downs else ups end);
    



    1. OLE DBソースコンポーネントのストアドプロシージャパラメータに値を渡すにはどうすればよいですか?

    2. mysqlの3つのテーブルとの内部結合

    3. MySQL5.7からMySQL8にアップグレードするためのヒント

    4. MariaDBでのUUID_SHORT()のしくみ