如何按列

时间:2016-07-12 11:31:59

标签: sql oracle

我有一张桌子如下。我希望以这样的方式组成一个小组,将1-4周期连接在一起,并将5-8个周期连接在一起。或者换句话说,我想从下面的字段中获得每月总计

table1

weeknum    amount     
1          1000     
2          1100     
3          1200     
4          1300     
5          1400     
6          1500     
7          1600     
8          1700   

我需要的输出如下

output
max(weeknum)       sum(amount)
4                   4600
8                   6200

以下答案并不完全适用于我的实际值,如下所示。我想从4周的分组开始。公式(weeknum-1)/ 4返回3组,因为预期只有2

weeknum Group Expr    Expected Group Expr 
1855   463           463     
1856   463           463
1857   464           463
1858   464           463
1859   464           464 
1860   464           464
1861   465           464 
1862   465           464 

需要在oracle中执行查询

1 个答案:

答案 0 :(得分:2)

尝试使用FLOORgroup by子句中的数字进行舍入:

SELECT MAX(t.weeknum),sum(amount)
FROM table1 t
GROUP BY FLOOR((t.weeknum-1)/4)

这将确保每4周被视为一组:

(1-1)/4 -> 0
(2-1)/4 -> 0
...
(5-1)/4 -> 1