Oracle SQL - 分发到存储桶

时间:2017-08-02 19:20:53

标签: oracle sorting plsql bucket analytic-functions

我正在寻找一个智能的oracle sql解决方案来将数据分发到多个存储桶中。 x的顺序很重要。我知道有很多算法,但我很确定必须有智能的sql(解析函数)解决方案,例如NTILE(3)但是我没理解。

x|quantity
1|7
2|4
3|9
4|2
5|10 
6|3
8|7
9|7
10|4
11|9
12|2
13|10 
16|3
17|7

结果应如下所示:

x_from|x_to|sum(quantity)
1|4|22

......等等

提前致谢

1 个答案:

答案 0 :(得分:4)

This example将表格划分为4个桶(ntile( 4 )):

SELECT min( "x" )  as "From",
       max( "x" ) as "To",
       sum("quantity")
FROM (
   SELECT t.*,
          ntile( 4 ) over (order by "x" ) as group_no
   FROM table1 t
)
GROUP BY group_no
ORDER BY 1;
| From | To | SUM("QUANTITY") |
|------|----|-----------------|
|    1 |  4 |              22 |
|    5 |  9 |              27 |
|   10 | 12 |              15 |
|   13 | 17 |              20 |