2017-04-13 4 views
0

Ich habe eine Datenbank mit bestimmten Spalten Ich arbeite mit der Adresse und der Zeit (unixtime) aber ich muss aus allen Spalten mit dem gleichen Datensatz (Wert) berechnen von der colum adres die Zeit zwischen der ersten und der letztenWie bekomme ich ein Min und Max von bestimmten IDs in sql

Also sagen wir, Adresse x hat 3 Einträge, dann möchte ich die Zeit von min bis max sortieren. Also muss ich auf Adresse sortieren, dann Zeit von min bis max/max min, so kann ich berechnen, wie lange die Person dort geblieben (Zeit)

This is my Query atm

+0

Bitte zurück nicht wollen, Beispieltabellendaten und das erwartete Ergebnis hinzufügen - auch formatierten Text! – jarlh

+0

Siehe http://meta.stackoverflow.com/questions/333952/why-should-i-provide-an-mcve-for-what-seems-to-me-to-be-very-simple-sql- query – Strawberry

Antwort

2

ich dünn, Sie group by und die Differenz wollen in Zeiten:

select address, min(from_unixtime(time)), max(from_uixtime(time)), 
     (max(from_unixtime(time)) - min(from_uixtime(time))) as diff 
from sensordata1 
group by address; 
+0

Das ist genau das, was ich meinte danke Ihnen dafür! Gibt es auch eine Möglichkeit, die Zeit für jede Adresse zu berechnen? Du hast Diff, aber wie bekomme ich das in Unix-Zeit? –

+0

@thattom. . . Dies berechnet das diff an jeder Adresse. –

+0

Ich meine ich brauche diese Zeit in Minuten –

1
SELECT address 
     , MAX(FROM_Unixtime(time)) as myMaxTime 
     , MIN(FROM_Unixtime(time)) as myMinTime 
     , TIMEDIFF(MAX(FROM_Unixtime(time)), MIN(FROM_Unixtime(time))) 
    FROM sensordata1 
    GROUP BY address 

Wenn Sie den gesamten Datensatz

+0

Das ist genau das, was ich meinte, danke dafür! Gibt es auch eine Möglichkeit, die Zeit für jede Adresse zu berechnen? –