Oracle SQL - 分配到存储桶中

标签 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

...等等

提前致谢

蒂姆

最佳答案

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 |

关于Oracle SQL - 分配到存储桶中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45469308/

相关文章:

mysql - 如何比较来自不同列和不同行但同一张表的值?

oracle - 在PL/SQL block 中预期外部语言错误

oracle - USER() 和 SYS_CONTEXT ('USERENV' ,'CURRENT_USER' 有什么区别?

c - 数组中最小的两个整数和

java - 如何获得 Java 中具有重复项的所有组合(递归)?

sql - Oracle SQL WITH 子句正确的用例和性能

mysql - 以下两个条件有什么区别? 1. 其中 ABC> ='00' 且 ABC< ='ZZ' 2. 其中 ABC> ='0' 且 ABC< ='Z'

c# - List.Sort() by Comparison 的性能是否优于自定义 IComparer?

oracle - Visual Studio 2015 Oracle 连接问题中的 SSDT

sql - 在 PL/SQL 中将绑定(bind)变量与动态 SELECT INTO 子句结合使用