Oracle SQL - 分配到桶中
Oracle SQL - distributing into buckets
我正在寻找一个智能 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
...等等
提前致谢
蒂姆
This example 将 table 分成 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 |
我正在寻找一个智能 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
...等等
提前致谢
蒂姆
This example 将 table 分成 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 |