Ho una tabella in cui i messaggi vengono memorizzati nel momento in cui si verificano. Di solito c'è un messaggio 'A' e talvolta gli A sono separati da un singolo messaggio 'B'. Ora voglio raggruppare i valori in modo da essere in grado di analizzarli, ad esempio trovando la più lunga 'striscia A' o la distribuzione di 'A'-streaks.Raggruppamento e conteggio delle righe per valore fino a quando non cambia
Ho già provato una query COUNT-OVER ma continuo a contare per ogni messaggio.
SELECT message, COUNT(*) OVER (ORDER BY Timestamp RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW)
Questo è il mio dati esempio:
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
io voglio seguente output
Message COUNT
A 2
B 1
A 3
B 1
Quindi ci sono due colonne coinvolte qui, messaggio e data/ora? – jarlh
C'è una colonna timestamp ma i dati vengono comunque memorizzati in ordine. – dwonisch
Considera sempre i dati come non ordinati! (Anche se sembra essere ordinato in questo momento, potrebbe cambiare in futuro.) Mai scrivere mai query a seconda di un ordine implicito !!! – jarlh