SQL-Gruppierung nach datetime mit einer maximalen Differenz von x Minuten

8

Ich habe ein Problem mit der Gruppierung meiner Datenmenge in MS SQL Server.

Mein Tisch sieht wie

aus %Vor%

Jetzt möchte ich die Zeilen gruppieren, in denen die SalesDate-Differenz für die nächste Zeile maximal 5 Minuten beträgt. Diese Reihe 1 & amp; 2, 3 & amp; 4 und 5 & amp; 6 sind jeweils eine Gruppe.

Mein Ansatz war es, die Minuten mit der Funktion DATEPART () zu erhalten und das Ergebnis durch 5 zu teilen:

%Vor%

Für Zeile 1 und 2 wäre das Ergebnis 3 und die Gruppierung würde hier perfekt funktionieren. Aber für die anderen Zeilen, in denen sich die Stunde oder sogar der Tagesabschnitt von SalesDate ändert, kann das Ergebnis nicht zum Gruppieren verwendet werden.

Also hier bin ich festgefahren. Ich würde es sehr schätzen, wenn mir jemand in die richtige Richtung zeigen könnte.

    
Felix 09.08.2016, 13:53
quelle

2 Antworten

5

Sie möchten benachbarte Transaktionen basierend auf dem Zeitverhalten zwischen ihnen gruppieren. Die Idee ist, eine Art Gruppierungskennung zuzuweisen und diese dann zur Aggregation zu verwenden.

Hier ist ein Ansatz:

  • Identifizieren der Gruppe beginnt mit lag() und Datumsarithmetik.
  • Beginnt eine kumulative Summe der Gruppe, um jede Gruppe zu identifizieren.
  • Aggregat

Die Abfrage sieht so aus:

%Vor%     
Gordon Linoff 09.08.2016, 13:59
quelle
2

BEARBEITEN

Danke an @JoeFarrell für den Hinweis, dass ich die falsche Frage beantwortet habe. Das OP sucht nach dynamischen Zeitunterschieden zwischen Zeilen, aber dieser Ansatz erstellt feste Grenzen.

Ursprüngliche Antwort

Sie könnten eine Zeittabelle erstellen. Dies ist eine Tabelle, die einen Datensatz für jede Sekunde des Tages enthält. Ihre Tabelle würde eine zweite Spalte haben, mit der Sie Gruppenbits ausführen können.

%Vor%

Der Ansatz funktioniert am besten, wenn:

  1. Sie müssen Ihre benutzerdefinierte Gruppierung in verschiedenen Abfragen erneut verwenden.
  2. Sie haben zwei oder mehr benutzerdefinierte Gruppen, die Sie häufig verwenden.

Nach dem Auffüllen können Sie sich einfach der Tabelle anschließen und das gewünschte Ergebnis ausgeben.

%Vor%     
destination-data 09.08.2016 14:24
quelle

Tags und Links