Heim > Datenbank > MySQL-Tutorial > Wie zähle ich aufeinanderfolgende Wertvorkommen in einer Datenbankspalte?

Wie zähle ich aufeinanderfolgende Wertvorkommen in einer Datenbankspalte?

Patricia Arquette
Freigeben: 2025-01-05 15:16:43
Original
706 Leute haben es durchsucht

How to Count Consecutive Value Occurrences in a Database Column?

So zählen Sie aufeinanderfolgende Vorkommen in der Spalte einer Tabelle

Beim Arbeiten mit Daten in einer Tabelle kann es nützlich sein, die Anzahl zu zählen wie oft ein Wert nacheinander in einer bestimmten Spalte vorkommt. Wenn eine Tabelle beispielsweise eine Spalte mit den Namen von Mitarbeitern enthält, möchten Sie möglicherweise wissen, wie oft derselbe Mitarbeitername in einer Zeile vorkommt.

Problem

Betrachten Sie die folgende Tabelle:

create table #t (Id int, Name char)

insert into #t values
(1, 'A'),
(2, 'A'),
(3, 'B'),
(4, 'B'),
(5, 'B'),
(6, 'B'),
(7, 'C'),
(8, 'B'),
(9, 'B')
Nach dem Login kopieren

Das Ziel besteht darin, die Anzahl der aufeinanderfolgenden Vorkommen jedes Werts in der Spalte „Name“ zu zählen. Die gewünschte Ausgabe ist:

Name Repetition
A 2
B 4
C 1
B 2

Lösung

Ein Ansatz zur Lösung dieses Problems besteht darin, das Konzept der Zeilennummern zu verwenden und dann die Differenz zwischen ihnen zu berechnen, um sie zu identifizieren aufeinanderfolgende Ereignisse. Die folgende Abfrage veranschaulicht diesen Ansatz:

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

Erklärung

Die Unterabfrage in der Abfrage:

(select t.*,
             (row_number() over (order by id) -
              row_number() over (partition by name order by id)
             ) as grp
      from t
     )
Nach dem Login kopieren

berechnet die Zeilennummern für jede Zeile in der 't'-Tabelle. Die Funktion row_number() weist jeder Zeile eine fortlaufende Nummer zu, während die Klausel „partition by“ dafür sorgt, dass die Zeilennummern für jeden einzelnen Wert in der Spalte „Name“ zurückgesetzt werden. Dies führt zur Spalte „grp“, die die Gruppe aufeinanderfolgender Vorkommen für jede Kombination aus „Name“ und „ID“ angibt.

Die äußere Abfrage gruppiert dann die Ergebnisse nach der Spalte „grp“ und zählt die Anzahl der Vorkommen für jede Kombination aus „grp“ und „Name“. Dies liefert das Endergebnis, das die aufeinanderfolgenden Vorkommen jedes Werts in der Spalte „Name“ zählt.

Durch die Nutzung der Differenz zwischen Zeilennummern ermittelt dieser Ansatz genau die aufeinanderfolgenden Vorkommen von Werten in der angegebenen Spalte und erzeugt Ergebnisse die gewünschte Ausgabe.

Das obige ist der detaillierte Inhalt vonWie zähle ich aufeinanderfolgende Wertvorkommen in einer Datenbankspalte?. 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