Mysql
 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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да направите пагинация в simpledb

  2. Хибернация - ClassNotFoundException:com.mysql.jdbc.Driver

  3. Грешка във вашия SQL синтаксис; проверете ръководството, което съответства на версията на вашия MySQL сървър

  4. Как да напиша вътрешна заявка, която връща последното съобщение за даден потребител?

  5. Можете ли автоматично да създадете mysqldump файл, който не налага ограничения на външния ключ?