SQL-Abfrage zum Finden von 3 aufeinanderfolgenden Datensätzen und entsprechenden Daten

SQL-Abfrage zum Finden von 3 aufeinanderfolgenden Datensätzen und entsprechenden Daten

Sie müssen die Daten auswählen, bei denen die Werte >=0,7 sind und mindestens 3 Mal hintereinander vorkommen.

            hourly recorded per day
Hours         00    0100  0200   0300   0400   0500 
ValueNumber   .7    .8    .5     .4     .8     .85     so on

Das Problem ist, dass ich die Daten auswählen kann, die >=0,7 sind und 3 Mal vorkommen, aber nicht hintereinander. Für jede Hilfe bin ich sehr dankbar.

select distinct  encounterId, COUNT(valueNumber) 
FROM table pta 
where interventionId in (2201,2202)
  and pta.valueNumber >=0.7
  and pta.valueNumber is not null
group by encounterId 
having COUNT(hours)>=3

Wenn Sie weitere Informationen benötigen, fragen Sie bitte. Die Datenbank ist riesig und jede einzelne Spalte wird als „InterventionID“ aufgezeichnet. Oben sind die Suchkriterien aufgeführt. Sobald dies erledigt ist, kann ich dies in eine temporäre Tabelle einfügen und dann den Datensatz abrufen. Ich freue mich auf eine Lösung.

Danke

Antwort1

WITH cte AS ( SELECT series,
                     date_time,
                     value, 
                     LEAD(value) OVER (PARTITION BY series 
                                       ORDER BY date_time) lead1, 
                     LEAD(value, 2) OVER (PARTITION BY series 
                                          ORDER BY date_time) lead2
              FROM datatable 
              WHERE value >= 0.7 )
SELECT series, date_time, value
FROM cte
WHERE lead1 >= 0.7
  AND lead2 >= 0.7

Wenn keine Serie vorhanden ist, entfernen Sie sie aus den Feldsätzen und der PARTITION BY-Klausel.

verwandte Informationen