Mysql
 sql >> база данни >  >> RDS >> Mysql

Сума Множество реда Разлика в датата Mysql

За всеки ред намерете първи ред с по-висока (по-късна) LogDate. Ако скоростта на този ред е по-малка от 10, пребройте разликата в датата между датата на този ред и датата на следващия ред, в противен случай поставете 0.

Заявка, която би дала списък на стойностите, преброени по този начин, трябва да изглежда така:

SELECT ( SELECT IF( c1.speed <10, unix_timestamp( c2.LogDate ) - unix_timestamp( c1.logdate ) , 0 )
           FROM car_log c2
           WHERE c2.LogDate > c1.LogDate
           LIMIT 1
       ) AS seconds_below_10
FROM car_log c1

Сега остава само да го обобщим:

SELECT sum( seconds_below_10) FROM 
( SELECT ( SELECT IF( c1.speed <10, unix_timestamp( c2.LogDate ) - unix_timestamp( c1.logdate ) , 0 )
           FROM car_log c2
           WHERE c2.LogDate > c1.LogDate
           LIMIT 1
          ) AS seconds_below_10
  FROM car_log c1 ) seconds_between_logs

Актуализация след коментар за добавяне на CarId:

Когато имате повече от 1 автомобил, трябва да добавите още едно условие WHERE в зависима подзаявка (ние искаме следващия регистрационен файл за точно тази кола, а не просто всеки следващ регистрационен файл) и да групирате целия набор от редове по CarId, като евентуално добавите споменатия CarId към избраното за показване също.

SELECT sbl.carId, sum( sbl.seconds_below_10 ) as `seconds_with_speed_less_than_10` FROM
( SELECT c1.carId, 
         ( SELECT IF( c1.speed <10, unix_timestamp( c2.LogDate ) - unix_timestamp( c1.logdate ) , 0 )
           FROM car_log c2
           WHERE c2.LogDate > c1.LogDate AND c2.carId = c1.carId
           LIMIT 1 ) AS seconds_below_10
  FROM car_log c1 ) sbl
GROUP BY sbl.carId

Вижте пример в Sqlfiddle .



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. как да съхраня java тип дата в mysql тип дата?

  2. docker compose MySQL контейнер [2002] Връзката е отказана

  3. Запазване на данни от таблицата, получени при изстъргване на уеб страница с помощта на casperjs

  4. WebApp (Tomcat-jdbc) Обединена DB връзка хвърля изключение за отказ

  5. MySQL5.6 заседна в процеса, опитвайки се да стартира услугата