Ich habe eine sehr einfache Tabelle genannt MYTABLE:SQL-Abfrage min (y) max (y) und X über eine Gruppe von
TSTAMP VARCHAR(20), VALUE VARCHAR(20)
Der Zeitstempel ist wie yyyy-mm-TTThh: MM: SS.zzzZ (ex: 2017-04-25T12: 23: 00.000Z). Wert ist ein Float.
Ich weiß, das Tischmodell nur schlecht ist, aber es von jemand anderem vor vielen Jahren getan wurde, die offensichtlich nicht wusste, was er/sie tat.
Ich versuche eine effiziente Abfrage zu schreiben, um den min (VALUE), den max (VALUE) und ihren TIMESTAMP über Zeitintervalle (zB: min/max jeder Minute) zu erhalten. Ich bin in der Lage, den Min- und Max-Wert mit der folgenden Abfrage zu erhalten, aber ich kann keinen Weg sehen, ihre Zeitstempel zu bekommen.
SELECT MIN(tstamp)
, MAX(tstamp)
, MIN(value) minVal
, MAX(value) max
, ABS(TRUNCATE(((UNIX_TIMESTAMP(tstamp)*1000+SUBSTR(tstamp,-4,3)) - 1493115780000)/20000,0)) intervalNumber
, tstamp
FROM mytable
WHERE tstamp BETWEEN '2017-04-25T12:23:00.000Z' AND '2017-04-25T12:24:00.000Z'
AND NOT tstamp = '2017-04-25T12:24:00.000Z'
GROUP
BY intervalNumber;
WHERE 1493115780000 ist das Ergebnis:
SELECT UNIX_TIMESTAMP('2017-04-25T12:23:00.000Z')*1000+SUBSTR('2017-04-25T12:23:00.000.000Z',-4,3);
* EDIT, weil ich nicht RICHTIG ERKLÄREN war, was ich bekommen, ist für jedes Intervall: ersten Zeitstempel, Lasttimestamp, min Wert, maxvalue , interne Nummer, erste Zeitstempel
Was ich will ist: Zeitstempel von min Wert, Zeitstempel von max Wert, min Wert, max Wert, interv al Nummer
Ich benutze Mysql 5.5.
Jede Hilfe wäre geschätzt :) Es sieht aus wie ein Tutorial Universität, aber das ist jetzt zu weit hinter mir :(
wäre es schön, wenn Sie die Fehlermeldung schreiben sind Sie –
@ElmerDantas ich immer bin nicht Fehlermeldung bekommen. Es ist nur so, dass ich nicht herausfinden kann, wie man die Zeitstempel von Min- und Max-Werten erhält. – Marc
@Milney: ich bin nicht derjenige, der dieses Datenmodell definiert (ich habe mich seit vielen Jahren darüber beschwert ....) Ich weiß, es ist einfach falsch ... – Marc