alexvo1401 0 Geschrieben 3. November 2022 Melden Teilen Geschrieben 3. November 2022 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 Zitieren Link zu diesem Kommentar
Beste Lösung MDD 12 Geschrieben 3. November 2022 Beste Lösung Melden Teilen Geschrieben 3. November 2022 WITH x AS ( 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' ) SELECT * FROM x WHERE NEWID%5=0 ORDER BY id DESC; so vielleicht 1 1 Zitieren Link zu diesem Kommentar
alexvo1401 0 Geschrieben 3. November 2022 Autor Melden Teilen Geschrieben 3. November 2022 Hat sofort funktioniert. Besten Dank. Zitieren Link zu diesem Kommentar
Damian 1.518 Geschrieben 3. November 2022 Melden Teilen Geschrieben 3. November 2022 @alexvo1401 Hallo und Willkommen on Board! Als Tipp für zukünftige Postings: Der Board-Editor ( siehe: </> ) bietet die Option, Code-Fragmente in verschiedenen Formaten zu formatieren, u. a. auch für SQL. Das erspart das manuelle Herumbasteln mit Textfarben. VG Damian 1 Zitieren Link zu diesem Kommentar
Empfohlene Beiträge
Schreibe einen Kommentar
Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.