日付に関連する記録があります:
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
日ごとに合計する方法は知っていますが、週ごとに合計する方法はありますか?」
これを試して
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')
出力は次のようになります:
+-----+-------+--------+
|YEAR | WEEK | AMOUNT |
+-----+-------+--------+
|2013 | 11 | 18 |
|2013 | 13 | 3 |
+-----+-------+--------+
TRUNC
関数を使用して、日付を週の最初の日に切り捨てることができます。 週を定義するいくつかの方法 があります。たとえば、週の最初の日が月曜日であることを扱いたい場合、次のようにIW
形式を使用できます。
select trunc(date, 'IW') week, sum(amount)
from YourTable
group by trunc(date, 'IW');
あなたもすることができます TO_CHAR
は「@Vignesh Kumer」の回答として機能します。
ポイントは、同じ週の日付を1つの値に切り捨てる必要があるということです。次に、値でグループ化します。それでおしまい。
これも役立つと思います。..
/* 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