Ich habe eine Tabelle von Registrierungen, etwa 300K Datensätze. Ich brauche eine SQL-Anweisung, die die Gesamtzahl der Registrierungen für diesen bestimmten Tag zeigt?
%Vor%Ergebnis dieser Abfrage:
%Vor%Gewünschtes Ergebnis:
%Vor%Wie kann das gemacht werden?
Hier sind zwei Versionen, um dies zu tun. Ich habe mit 100000 Zeilen über 6000 Tage auf einem wirklich langsamen Computer mit nicht genügend Speicher getestet, und das zeigt, dass die Cte-Version schneller ist als die Loop-Version. Die anderen hier vorgeschlagenen Versionen (bis jetzt) sind viel langsamer, vorausgesetzt, dass ich das Problem richtig verstanden habe.
Rekursiver CTE (10 Sekunden)
%Vor%Schleife (14 Sekunden)
%Vor%Bearbeiten 1 Die wirklich schnelle Version
%Vor%Momentan haben Sie zwei Möglichkeiten: Die erste verwendet Join wie von vbence vorgeschlagen, die zweite ist die Unterabfrage:
%Vor%Diese beiden Ansätze erzeugen ähnliche Ausführungspläne.
Wenn SQL Server in der Zukunft ORDER BY
für OVER
mit Aggregatfunktionen implementiert, können Sie
Verwenden Sie einfach SUM
, um eine kumulative Anzahl zu erhalten:
Sie können dieses Problem durch die folgende SQL-Abfrage lösen. Sie haben zwei Spalten col1=Number
und col2=Date
Tags und Links sql sql-server tsql