MySQL bekommen Unterschied zwischen max-und min-Werte für die Zeilen auszuwählen
Möchte ich eine Abfrage, wird der Unterschied zwischen der max-und min-Werte gruppiert nach Tag. Mein Versuch funktioniert nicht:
SELECT date(`date`),
(max(value) - min(value)) as value,
FROM `sub_meter_data`
where date(sub_meter_data.date) > '2012-10-01'
and sub_meterID in('58984','58985','58986','58987')
group by date(`date`);
Jeder sub_meter einen Wert hat, vielleicht werden >3000, aber unterscheidet sich nur durch < 10 pro Tag. Ich will die Differenz, dh ein Ergebnis <10. Mit der obigen Abfrage bekomme ich die Ergebnisse >3000.
Diese Abfrage unten, nur wählt einen meter, und geben Sie das richtige Ergebnis, den max (17531), min (17523), und die Differenz (8).
SELECT date(sub_meter_data.date) as date,
max(value) as max_meter,
min(value) as min_meter,
max(value) - min(value) as diff,
FROM `sub_meter_data`
where date(sub_meter_data.date) > '2012-10-01'
and sub_meterID in('57636')
group by date(sub_meter_data.date)
Aber das hinzufügen eines weiteren meter in die in-Klausel, geben ein schlechtes Ergebnis ist das max 17531, und die min 3021, das diff ist 14510. Aber ich will das diff für jeden meter, und dann summiert.
SELECT date(sub_meter_data.date) as date,
max(value) as max_meter,
min(value) as min_meter,
max(value) - min(value) as diff,
FROM `sub_meter_data`
where date(sub_meter_data.date) > '2012-10-01'
and sub_meterID in('57636', '57628')
group by date(sub_meter_data.date)
Einen weiteren Versuch, den ich versucht habe ist:
SELECT date(sub_meter_data.date) as date,
sum(CASE WHEN sub_meterID = '57628' OR sub_meterID = '57636' THEN (max(value) - min(value)) ELSE 0 END) as value
FROM `sub_meter_data`
where date(sub_meter_data.date) > '2012-10-01'
Was nicht funktioniert, über das Ihre Suche? Fehlermeldung, Ungültiger Daten? Können Sie uns ein Beispiel für die Reaktion?
Ich bekomme ein Ergebnis, aber die Zahl ist viel zu hoch. Ich werde detailliert das erwartete Ergebnis vor.
haben Sie versuchen Sie, max(val) min(val) < 10 in der where-Klausel?
InformationsquelleAutor user1745767 | 2012-10-19
Du musst angemeldet sein, um einen Kommentar abzugeben.
Die Abfrage ist nur der Gruppierung nach Tag (Datum), aber Sie wollen die Gruppe auch nach dem Zähler, so dass Sie brauchen, um hinzuzufügen, dass in Ihr
group by
:Dann, wenn Sie wollen, um die Summe der Differenzen von Tag, die Sie tun können:
Oder wenn Sie wollen, um die Summe meter:
InformationsquelleAutor Xint0