roy*_*att 20 sql oracle aggregate-functions
我有与日期有关的记录:
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
Run Code Online (Sandbox Code Playgroud)
我知道如何总结每一天,但我怎么能在一周之前总结一下呢?
nta*_*lbs 30
您可以使用TRUNC
函数将日期截断到一周的第一天.定义周的方法有几种.例如,如果您想要将星期的第一天视为星期一,则可以IW
格式化,如下所示:
select trunc(date, 'IW') week, sum(amount)
from YourTable
group by trunc(date, 'IW');
Run Code Online (Sandbox Code Playgroud)
你也可以TO_CHAR
作为"@Vignesh Kumer"的答案.
关键是你应该将同一周的日期截断为一个值.然后按值分组.而已.
Vig*_*r A 28
试试这个
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')
Run Code Online (Sandbox Code Playgroud)
输出将是:
+-----+-------+--------+
|YEAR | WEEK | AMOUNT |
+-----+-------+--------+
|2013 | 11 | 18 |
|2013 | 13 | 3 |
+-----+-------+--------+
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
43329 次 |
最近记录: |