Mindest- und Höchstwerte für aufeinanderfolgende Zeilen ermitteln
Sie haben einen Datensatz mit Zeilen, die Aktivitäten darstellen, nach Namen gruppiert und nach Zeilennummer geordnet. Das Ziel besteht darin, die Mindest- und Höchstwerte der Start- und Endzeiten für aufeinanderfolgende Zeilen innerhalb jeder Aktivitätsgruppe zu ermitteln.
Lösung mithilfe der Zeilennummerndifferenz:
Ein Ansatz ist um den Unterschied zwischen Zeilennummern zu verwenden, um aufeinanderfolgende Zeilen desselben zu identifizieren Aktivität:
with cte as ( select *, row_number() over (partition by name order by rn) as seqnum_n, row_number() over (partition by name, act order by rn) as seqnum_na from input ) select name, act, min(startt), max(endd) from cte group by seqnum_n - seqnum_na, name, act;
Erklärung:
Erstellen Sie einen allgemeinen Tabellenausdruck (CTE) namens cte, indem Sie zwei zusätzliche Spalten hinzufügen:
Das obige ist der detaillierte Inhalt vonWie finde ich minimale und maximale Start- und Endzeiten für aufeinanderfolgende Zeilen innerhalb von Aktivitätsgruppen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!