wake-up-neo.com

Oracle SQL - Daten summieren und gruppieren nach Woche

Ich habe Aufzeichnungen in Bezug auf Datumsangaben:

DATE         AMOUNT
16.03.2013   3
16.03.2013   4
16.03.2013   1
16.03.2013   3
17.03.2013   4
17.03.2014   3

Ich weiß, wie ich sie für jeden Tag zusammenfassen kann, aber wie könnte ich sie nach einer Woche zusammenfassen?

16
royskatt

Versuche dies

SELECT to_char(DATE - 7/24,'IYYY'), to_char(DATE - 7/24,'IW'),SUM(AMOUNT)
FROM YourTable
GROUP BY to_char(DATE - 7/24,'IYYY'), to_char(DATE - 7/24,'IW')

FIDDLE DEMO


Ausgabe wäre:

+-----+-------+--------+
|YEAR | WEEK  | AMOUNT |
+-----+-------+--------+
|2013 | 11    | 18     |
|2013 | 13    | 3      |
+-----+-------+--------+
26
Vignesh Kumar A

Sie können die Funktion TRUNC verwenden, um das Datum auf den ersten Tag der Woche zu kürzen. Es gibt einige Möglichkeiten, die Woche zu definieren . Wenn Sie beispielsweise behandeln möchten, dass der erste Tag der Woche Montag ist, können Sie IW wie folgt formatieren:

select trunc(date, 'IW') week, sum(amount)
from YourTable
group by trunc(date, 'IW');

Sie können auch TO_CHAR als Antwort von "@Vignesh Kumer" fungieren.

Der Punkt ist, dass Sie das Datum in derselben Woche auf einen Wert kürzen sollten. Dann gruppiere den Wert. Das ist es.

26
ntalbs

Ich denke, das würde auch helfen ....

 /* Weekly sum of values */
 SELECT SUM( Amount ) as Sum_Amt, 
 DATEPART (wk, Date) as WeekNum
 FROM databse_name.table_name
 GROUP BY DATEPART (wk, Date)
 ORDER BY WeekNum

 /* Monthly sum of values */
 SELECT SUM( Amount ) as Sum_Amt, 
 DATEPART (mm, Date) as MonNum
 FROM databse_name.table_name
 GROUP BY DATEPART (mm, Date)
 ORDER BY MonNum
0
Manoj Kumar