2017-05-08 4 views
-1

Ich habe eine Reihe von Daten in einer Tabelle gespeichert, jede Zeile endet mit einer ts Spalte, geben Sie TIMESTAMP.Inkrementelle Zählung (*) mit YEARWEEK

möchte ich, bis ein Punkt inkrementale Zählungen erhalten, so zum Beispiel habe ich die folgende Abfrage:

SELECT YEARWEEK(ts), DATE(ts), COUNT(*) FROM bestellen WHERE DATE(ts) >= '01/12/13' GROUP BY YEARWEEK(ts)

, die wie etwas produziert:

201346 20/11/2013 59 
201347 24/11/2013 44 
201348 01/12/2013 21 

aber ich brauche eine Spalte, die die COUNTS bis diesen Punkt summiert, so würde ich etwas wie benötigen:

201346 20/11/2013 59 59 
201347 24/11/2013 44 103 
201348 01/12/2013 21 124 

Wie kann ich dies mit mysql erreichen ?? Es ist für eine Liniendiagramm, also muss ich zeigen, dass die Zahlen jede Woche steigen und ich kann das nicht mit der aktuellen SQL-Anweisung tun.

+0

Können Sie einen Blick auf geben http://stackoverflow.com/questions/2563918/create- a-cumulative-sumspalte-in-mysql – etsa

Antwort

1
SET @SUM:=0; 
SELECT YEARWEEK(ts), DATE(ts), COUNT(*),(@SUM := @SUM+COUNT(*)) as CSUM 
FROM orders WHERE DATE(ts) >= '01/12/13' GROUP BY YEARWEEK(ts) 

mit freundlicher Genehmigung this answer from Andomar

+0

@ Chud37 Dies ist nicht die richtige Antwort. Wenn Sie die Antwort in diesem Zusammenhang sorgfältig sehen, werden Sie sehen, warum es falsch ist. – GurV

0

Sie können Benutzervariablen verwenden, um die laufende Zählung zu erhalten:

set @total := 0 

select YEARWEEK(ts), 
    date(ts), 
    COUNT(*), 
    @total := @total + COUNT(*) as running_count 
FROM order 
WHERE date(ts) >= '01/12/13' 
group by YEARWEEK(ts) 
order by YEARWEEK(ts);