Kumulierte Spaltenwerte aus aktuellen und früheren Daten

8

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?

    
Alessandro 27.03.2011, 14:42
quelle

6 Antworten

2

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

Das schrullige Update

%Vor%     
Mikael Eriksson 27.03.2011, 20:49
quelle
2

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

schreiben %Vor%     
a1ex07 27.03.2011 15:09
quelle
2

Verwenden Sie einfach SUM , um eine kumulative Anzahl zu erhalten:

%Vor%     
p.campbell 27.03.2011 15:08
quelle
1

Versuchen Sie es.

%Vor%

Natürlich müssen Sie Ihre Tabelle mit etwas wie:

indizieren %Vor%     
vbence 27.03.2011 14:48
quelle
1

Sie können dieses Problem durch die folgende SQL-Abfrage lösen. Sie haben zwei Spalten col1=Number und col2=Date

angegeben %Vor%     
Neeraj Kumar 14.12.2012 10:56
quelle
0

Eine weitere Option ist die Verwendung von CLR zur Definition Ihrer eigenen laufenden Summenfunktion, wie im folgenden Link beschrieben:

Ссылка

    
pcofre 27.03.2011 22:44
quelle

Tags und Links