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?
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')
Ausgabe wäre:
+-----+-------+--------+
|YEAR | WEEK | AMOUNT |
+-----+-------+--------+
|2013 | 11 | 18 |
|2013 | 13 | 3 |
+-----+-------+--------+
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.
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