Hallo zusammenm,
ich habe eine ziemlich große Tabelle in der viele Daten gespeichert werden.
Da ich einige der Daten z.B. Temperaturen später auf einer Webseite darstellen möchte würde ich gerne nur jeden z.B. 5ten Wert aus der Tabelle auslesen und später mit visualisieren.
Eine Möglichkeit wäre natürlich die Daten erst im Backend zu filtern. Aus Performance Gründen würde ich da jedoch gerne drauf verzichten.
Meine Abfrage sieht aktuell so aus:
SELECT id, timestamp, value
FROM Tabelle
WHERE varname='S2 Temperatur' AND timestamp > '2022-11-01T12:00:00'
ORDER BY id DESC
Mein erster Gedanke war, anhand der id und eine modulo Abfrage nur jeden xten Wert auszulesen. Das Problem dabei ist aber, die ID ist fortlaufend für alle Einträge in der Tabelle. Durch die Abfrage würden meine Einträge also zwar dezimiert, es wird aber logischerweise nicht genau jeder x-te Wert ausgelesen da die ID halt nicht nur für die Temperatur hochzählt.
SELECT id, timestamp, value
FROM Tabelle
WHERE varname='S2 Temperatur' AND timestamp > '2022-11-01T12:00:00'
AND (id%5)=0
ORDER BY id DESC
Daher habe ich überlegt mit "Row Number" um halt einfach eine neue ID für alle abgefragten Werte zu erhalten. Problem dabei ist aber, dass ich die Row NumberID jetzt nicht in der Modulo Abfrage nutzen kann.
Diese Abfrage funktioniert nicht da die Variable newid keine Spaltenbezeichnung entspricht:
SELECT ROW_NUMBER() OVER (ORDER BY Id) AS newid, id, timestamp, value
FROM Tabelle
WHERE varname='S2 Temperatur' AND timestamp > '2022-11-01T12:00:00'
AND (newid%5)=0
ORDER BY id DESC
Ist es möglich diese Variable irgendwie in einer temporären Variable Zwischen zuspeichern? Wenn ja wie sieht die korrekte Syntax dafür aus? Leider habe ich bis lang keine funktionierende Abfrage auf die Reihe bekommen.
Natürlich wäre es noch schöner, wenn ich die x Werte jeweils noch mitteln würde. Darüber zerbreche ich mir allesdings erst später den Kopf..
Ich wäre dankbar, wenn mir jemand weiterhelfen kann.
Viele Grüße
AV