web-dev-qa-db-ja.com

Oracle SQL-週ごとのデータの合計とグループ化

日付に関連する記録があります:

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

日ごとに合計する方法は知っていますが、週ごとに合計する方法はありますか?」

19
royskatt

これを試して

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


出力は次のようになります:

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

TRUNC 関数を使用して、日付を週の最初の日に切り捨てることができます。 週を定義するいくつかの方法 があります。たとえば、週の最初の日が月曜日であることを扱いたい場合、次のようにIW形式を使用できます。

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

あなたもすることができます TO_CHARは「@Vignesh Kumer」の回答として機能します。

ポイントは、同じ週の日付を1つの値に切り捨てる必要があるということです。次に、値でグループ化します。それでおしまい。

28
ntalbs

これも役立つと思います。..

 /* 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