Ich habe eine Datetime-Spalte und kann problemlos Abfragen mit einer Gruppe in meiner Datetime-Spalte ausführen. Ich möchte jedoch Gruppenabfragen für ausführen
- Intervalle von 1 Minute
- 2-Minuten-Intervalle
- 5-Minuten-Intervalle
- Intervalle von 1 Stunde
- usw.
Wie mache ich das?
sql-server
sql-server-2008
dublintech
quelle
quelle
Antworten:
Zunächst eine Tabelle und einige Beispieldaten zum Spielen:
(Ich würde dies in sqlfiddle tun, aber ich bin nicht sicher, ob es
GO <int>
viele Zeilen unterstützt undINSERT
> 8000 Zeichen verschluckt .)Nun eine gespeicherte Prozedur:
Und einige Beispiele für die Verwendung:
Der Kürze halber zeige ich die Ergebnisse für den letzten Anruf, aber Sie können mit den anderen spielen.
Einige Notizen:
dates
, um alle Intervalle für den Tag und nicht alle Intervalle zwischen der minimalen und der maximalen Zeitdbo.SomeTable
an diesem Tag zu erstellen . Die folgende Variante sorgt dafür, dass die Daten für einen einzelnen Tag ab Mitternacht angezeigt und um @MinutInterval erhöht werden:...
Beispielanrufe:
Verkürzte Ergebnisse des letzten Anrufs:
(Wenn Sie die Intervalle nicht ohne Zählung einschließen möchten, ändern Sie die linke äußere Verknüpfung in eine innere Verknüpfung. Sie können auch seltsame Ergebnisse erzielen, wenn Sie ein Intervall auswählen, das nicht gut in 1440 passt. I ' Überlasse diesen Fall dem Leser als Übung.)
quelle
Ergebnis:
quelle
Da
DATEPART
gibt ganze Zahlen zurück ...Die angezeigten Zahlen sind der Beginn des Fünf-Minuten-Zeitraums. Die mit "30" bezeichnete Zeile deckt also Ereignisse ab, die bei X: 30, X: 31, X: 32, X: 33 und X: 34 auftreten.
quelle
4:30
wird mit5:30
und kombiniert,6:30
da die Minute auf der ganzen Linie gleich ist. Sie müssen mindestens auch Datum und Uhrzeit angeben.