Ich habe eine Tabelle, in der Nachrichten gespeichert werden, während sie passieren. Normalerweise gibt es eine Nachricht "A" und manchmal sind die A's durch eine einzige Nachricht "B" getrennt. Nun möchte ich die Werte gruppieren, damit ich sie analysieren kann, zum Beispiel den längsten "A" -Streifen oder die Verteilung von "A" -Streifen zu finden.Gruppieren und Zählen von Zeilen nach Wert, bis sie sich ändert
Ich habe bereits eine COUNT-OVER-Abfrage versucht, die aber für jede Nachricht weiter zählt.
SELECT message, COUNT(*) OVER (ORDER BY Timestamp RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW)
Dies ist mein Beispieldaten:
Timestamp Message
20150329 00:00 A
20150329 00:01 A
20150329 00:02 B
20150329 00:03 A
20150329 00:04 A
20150329 00:05 A
20150329 00:06 B
Ich möchte folgende Ausgabe
Message COUNT
A 2
B 1
A 3
B 1
Also sind hier zwei Spalten beteiligt, Nachricht und Zeitstempel? – jarlh
Es gibt eine Zeitstempelspalte, aber die Daten werden der Reihe nach gespeichert. – dwonisch
Betrachten Sie Daten immer als ungeordnet! (Selbst wenn es gerade bestellt zu sein scheint, kann es sich in der Zukunft ändern.) Schreiben Sie niemals Anfragen in Abhängigkeit von einer impliziten Reihenfolge !!! – jarlh