Gruppieren von Werten basierend auf aufeinanderfolgenden Vorkommen
Um aufeinanderfolgende Vorkommen von Werten in einer Tabelle zu zählen, besteht ein effektiver Ansatz darin, die Differenz in der Zeile zu berechnen Zahlen.
Betrachten Sie die folgende Abfrage:
select name, count(*) from ( select t.*, (row_number() over (order by id) - row_number() over (partition by name order by id) ) as grp from t ) t group by grp, name;
Dies Unterabfrage generiert zwei Zeilennummern für jede Zeile:
Durch Subtraktion der beiden Zeilennummern erstellen wir eine „Gruppen“-ID (grp), das sich jedes Mal erhöht, wenn sich der Name ändert oder ein eindeutiges aufeinanderfolgendes Vorkommen desselben Namens vorliegt.
Die letzte Abfrage gruppiert dann die Zeilen basierend auf diesem grp und zählt die Vorkommen jedes Namens innerhalb jeder Gruppe. Dies führt zur gewünschten Anzahl aufeinanderfolgender Vorkommen:
+------+------------+ | Name | Repetition | +------+------------+ | A | 2 | | B | 4 | | C | 1 | | B | 2 | +------+------------+
Dieser Ansatz bietet eine effiziente Möglichkeit, aufeinanderfolgende Werte in einer Tabelle zu identifizieren, indem der Unterschied in den Zeilennummern als Gruppierungsmechanismus genutzt wird.
Das obige ist der detaillierte Inhalt vonWie zähle ich aufeinanderfolgende Vorkommen von Werten in einer SQL-Tabelle?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!