Heim > Datenbank > MySQL-Tutorial > Wie zähle ich aufeinanderfolgende Vorkommen von Werten in einer SQL-Tabelle?

Wie zähle ich aufeinanderfolgende Vorkommen von Werten in einer SQL-Tabelle?

Barbara Streisand
Freigeben: 2025-01-05 15:40:40
Original
141 Leute haben es durchsucht

How to Count Consecutive Occurrences of Values in a SQL Table?

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;
Nach dem Login kopieren

Dies Unterabfrage generiert zwei Zeilennummern für jede Zeile:

  • row_number() over (order by id): Eine fortlaufende Nummer basierend auf der gesamten Zeilenreihenfolge.
  • row_number() over (partition nach Name, Reihenfolge nach ID): Eine fortlaufende Nummer, die für jeden eindeutigen Namen spezifisch ist.

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 |
+------+------------+
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage