NEWS
[gelöst] Abfrage HeidiSQL aus MariaDB - Support benötigt
-
Hallo zusammen, guten Tag und guten Abend
Ich habe für Vollprofis eine bestimmt total einfache Frage. Da ich aber keine Ahnung von SQL habe, suche ich nach einem einfachen Weg meine gespeicherten Energiedaten von MariaDB über HeidiSQL nach Excel zu exportieren. Ich habe versucht mit ChatGPT weiter zu kommen und die IA hat mir auch Code geliefert, allerdings führt das zu keinerlei Ergebnis. Ich fange mal vorne an:HeidiSQL Abfrage
Der Name der Datenbank ist „iobroker“. Die Daten liegen in der Tabelle „ts_number“, diese ist wie folgt aufgebaut:
Spalte 1 = ID (ID der Daten)
Spalte 2 = TS (Timestamp im Linuxformat)
Spalte 3 = Val (Die gespeicherten Werte)
Spalte 4 = Ack (nicht benötigt)
Spalte 5 = _from (nicht benötigt)
Spalte 6 = q (nicht benötigt)Abfrage 1:
Es soll für die „ID=32“ eine Tabelle aus den Daten von „iobroker.ts_number“ aus dem Jahr 2023 sortiert vom 01/01/2023 – 31/12/2023 aufsteigend erzeugt werden.
Spalte 1 = ID
Spalte 2 = Datum + Uhrzeit im lesbaren Format DD/MM/YYYY – hh:mm:ss
Spalte 3 = ValAbfrage 2:
Es soll für die „ID=32“eine Tabelle aus den Daten von „iobroker.ts_number“ sortiert vom 01/01/2023 – 31/12/2023 aufsteigend nach Wochen erzeugt werden.
Spalte 1 = ID
Spalte 2 = Jahr
Spalte 3 = Woche Nr.
Spalte 4 = Summe Val
Spalte 5 = Minimum Val
Spalte 6 = Maximum Val
Spalte 7 = Durchschnitt ValEventuell hat jemand von euch eine Idee, wie ich den Code schreiben muss??
Dankeschön vorab und einen schönen Abend! -
Ich habs selbst hinbekommen. Für alle die es interessiert:
Macht eine Tabelle mit 6 Spalten, ID des Datenpunktes = 32,
alles im Zeitraum zwischen 2023-01-01 00:00:00 und 2023-12-31 23:59:59
Datum
Summe
Durchschnitt
Minimum
Maximum
Differenz zw. Minimum und Maximum.
Sortiert das Ganze dann nach Datum aufsteigend.SELECT
DATE(FROM_UNIXTIME(ts / 1000)) AS DATE,
ROUND(SUM(val), 2) AS Sum,
ROUND(AVG(val), 2) AS Average,
ROUND(MIN(val), 2) AS Minimum,
ROUND(MAX(val), 2) AS Maximum,
ROUND(MAX(val) - MIN(val), 2) AS Difference
FROM iobroker.ts_number
WHERE FROM_UNIXTIME(ts / 1000) BETWEEN '2023-01-01 00:00:00' AND '2023-12-31 23:59:59'
AND id = 32
GROUP BY Date
ORDER BY Date ASC;Damit kann man das Ganze dann einfach in Excel kopieren und weiterarbeiten.