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

SQL合計行間の平均時間差を計算します

    行が挿入された頻度(平均)を知りたい場合は、すべての差を計算する必要はないと思います。 (タイムスタンプに基づいて隣接する)隣接する行間の差を合計し、その結果を被加数の数で割るだけで済みます。

    ((T1-T0) + (T2-T1) + … + (TN-TN-1)) / N
    

    明らかに単純化することができます

    (TN-T0) / N
    

    したがって、クエリは次のようになります。

    SELECT TIMESTAMPDIFF(SECOND, MIN(date), MAX(date)) / (COUNT(*) - 1)
    FROM atable
    

    行数が1より大きいことを確認してください。そうしないと、ゼロ除算エラーが発生します。それでも、必要に応じて、簡単なトリックでエラーを防ぐことができます:

    SELECT
      IFNULL(TIMESTAMPDIFF(SECOND, MIN(date), MAX(date)) / NULLIF(COUNT(*) - 1, 0), 0)
    FROM atable
    

    これで、単一行のテーブルに対してクエリを安全に実行できます。



    1. システム変数MESSAGE_TEXTがMysqlのSIGNALステートメントで機能していませんか?

    2. 外部キーを変更するにはどうすればよいですか?

    3. ウィンドウ関数とよりローカルな集約

    4. Pythonで、UNIXタイムスタンプがある場合、それをMySQL日時フィールドに挿入するにはどうすればよいですか?