J'ai des enregistrements liés aux dates:
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
Je sais comment les résumer pour chaque jour, mais comment pourrais-je les résumer par semaine? »
Essaye ça
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')
La sortie serait:
+-----+-------+--------+
|YEAR | WEEK | AMOUNT |
+-----+-------+--------+
|2013 | 11 | 18 |
|2013 | 13 | 3 |
+-----+-------+--------+
Vous pouvez utiliser TRUNC
function pour tronquer la date au premier jour de la semaine. Il y a quelques façons de définir semaine . Par exemple, si vous souhaitez que le premier jour de la semaine soit le lundi, vous pouvez utiliser le format IW
, comme ceci:
select trunc(date, 'IW') week, sum(amount)
from YourTable
group by trunc(date, 'IW');
Vous pouvez également utiliser TO_CHAR
comme réponse de "@Vignesh Kumer".
Le fait est que vous devez tronquer la date de la même semaine en une seule valeur. Puis groupe par la valeur. C'est tout.
Je suppose que cela aiderait aussi ...
/* 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