已关闭。此问题需要超过focused。当前不接受答案。
**想要改进此问题吗?**更新此问题,使其仅关注editing this post的一个问题。
昨天关门了。
Improve this question
我需要一些帮助来理解下面的SQL语句,因为我对oracle SQL还相当陌生。
with grps as (
select ntile(10) over (order by x) grp,
t.*
from t
)
select /*+ ENABLE_PARALLEL_DML PARALLEL(AUTO) */
min(x) start_id,
max(x) end_id
from grps
group by grp;
给定一个作为数据集的示例表,我应该如何适当地替换上面查询中的参数,以及这里发生了什么?
2条答案
按热度按时间f87krz0w1#
CTE首先将表t划分为元素组,这样您将有10个具有均匀分布的行数的组
下一个select从每个组中获取最小和最大的id
因此,您可以添加的唯一变量是您希望将数据划分为多少个组
sg3maiej2#
这是怎么回事?
查找
NTILE
文档:一米一分一秒
语法
另请参见:
有关语法、语义和限制(包括表达式的有效形式)的信息,请参阅“分析函数”
目的
NTILE
是一个解析函数。它将有序数据集划分为expr
所指示的多个存储桶,并为每行分配相应的存储桶编号。存储桶编号为1到expr
。然后,对于子查询factoring(
WITH
)子句生成的10个存储桶中的每一个,对每个存储桶执行GROUP BY
操作,并在该存储桶中查找x
的MIN
最小值和MAX
最小值。如何适当地替换上述查询中的参数
查询中没有(绑定)参数。
如果要更改存储桶的数量,请将
10
更改为其他数字。