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

テーブルの行間の平均時間差を見つける方法は?

    テーブルがtで、タイムスタンプ列がtsで、秒単位で回答が必要な場合:

    SELECT TIMESTAMPDIFF(SECOND, MIN(ts), MAX(ts) ) 
           /
           (COUNT(DISTINCT(ts)) -1) 
    FROM t
    

    これは、n-squared JOINがないため、大きなテーブルの場合ははるかに高速になります

    これは、この問題に役立つかわいい数学的トリックを使用しています。今のところ、重複の問題は無視してください。連続する行間の平均時間差は、最初のタイムスタンプと最後のタイムスタンプの差を行数-1で割ったものです。

    証明:連続する行間の平均距離は、連続する行間の距離の合計を連続する行の数で割ったものです。ただし、連続する行間の差の合計は、最初の行と最後の行の間の距離にすぎません(タイムスタンプでソートされていると仮定)。そして、連続する行の数は、行の総数-1です。

    次に、タイムスタンプを区別できるように調整します。



    1. SQL転置フルテーブル

    2. PostgreSQLDBからのコメントの取得

    3. SQL Serverエラー:文字列またはバイナリデータが切り捨てられます

    4. `in`句を使用したC#パラメータ化クエリMySQL