Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Suma wielu wierszy różnicy dat Mysql

Dla każdego wiersza znajdź pierwszy wiersz z wyższą (późniejszą) datą LogDate. Jeśli prędkość w tym wierszu jest mniejsza niż 10, policz różnicę dat między datą tego wiersza a datą następnego wiersza, w przeciwnym razie wpisz 0.

Zapytanie, które dałoby listę zliczonych w ten sposób wartości, powinno wyglądać tak:

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

Teraz wystarczy podsumować:

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

Aktualizacja po komentarzu o dodaniu CarId:

Gdy masz więcej niż 1 samochód, musisz dodać jeszcze jeden warunek WHERE wewnątrz zależnego podzapytania (chcemy następny dziennik dla tego samochodu, a nie tylko następny dziennik) i zgrupować cały zestaw wierszy według CarId, ewentualnie dodając ten CarId do zaznaczenia do wyświetlenia to też.

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

Zobacz przykład na 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. Skuteczny sposób obliczania procentu podobieństwa między zestawami danych

  2. PHP / MYSQL Dodaj przycisk do kolumny

  3. Jak wybrać kolumnę za pomocą Hibernate?

  4. Model ustawień globalnych Laravel

  5. Menu z zapytaniem składającym