Heim >Datenbank >MySQL-Tutorial >Wie finde ich Minimal- und Maximalwerte in aufeinanderfolgenden Zeilen mit Lücken und Inseln?

Wie finde ich Minimal- und Maximalwerte in aufeinanderfolgenden Zeilen mit Lücken und Inseln?

DDD
DDDOriginal
2024-12-24 19:14:11769Durchsuche

How to Find Minimum and Maximum Values Across Consecutive Rows with Gaps and Islands?

Mindest- und Höchstwerte für aufeinanderfolgende Zeilen mit Lücken und Inseln ermitteln

Das Ziel besteht darin, Mindest- und Höchstwerte der Start- und Endspalten zu extrahieren für aufeinanderfolgende Zeilen mit demselben Aktwert, während Lücken und Reiheninseln mit unterschiedlichem Akt ignoriert werden Werte.

Lösung:

Um dies zu erreichen, verwenden wir Zeilennummern, um aufeinanderfolgende Gruppen ähnlicher Zeilen zu identifizieren:

with cte as (
  select name, act, rn, startt, endd,
         row_number() over (partition by name, act order by rn) as act_rn
  from input
)
select name, act, min(startt), max(endd)
from cte
group by name, act, act_rn - rn;

Erläuterung:

  • Die Unterabfrage cte fügt den Eingabedaten Zeilennummern und Aktzeilennummern hinzu.
  • Die Hauptabfrage gruppiert die Daten nach Name, Akt und der Differenz zwischen Aktzeilennummer und Zeilennummer. Dieser Unterschied wird verwendet, um zwischen aufeinanderfolgenden und nicht aufeinanderfolgenden Zeilen innerhalb eines bestimmten Aktwerts zu unterscheiden.
  • Die Gruppierung ermöglicht es uns, Mindest- und Höchstwerte für jede aufeinanderfolgende Gruppe zu aggregieren und so Lücken und Inseln zu beseitigen.

Das obige ist der detaillierte Inhalt vonWie finde ich Minimal- und Maximalwerte in aufeinanderfolgenden Zeilen mit Lücken und Inseln?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn