oracle 了解以下sql语句[已关闭]

7vux5j2d  于 2023-03-07  发布在  Oracle
关注(0)|答案(2)|浏览(129)

已关闭。此问题需要超过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;

给定一个作为数据集的示例表,我应该如何适当地替换上面查询中的参数,以及这里发生了什么?

f87krz0w

f87krz0w1#

CTE首先将表t划分为元素组,这样您将有10个具有均匀分布的行数的组
下一个select从每个组中获取最小和最大的id
因此,您可以添加的唯一变量是您希望将数据划分为多少个组

sg3maiej

sg3maiej2#

这是怎么回事?
查找NTILE文档:

一米一分一秒

语法

另请参见:

有关语法、语义和限制(包括表达式的有效形式)的信息,请参阅“分析函数”

目的

NTILE是一个解析函数。它将有序数据集划分为expr所指示的多个存储桶,并为每行分配相应的存储桶编号。存储桶编号为1到expr
然后,对于子查询factoring(WITH)子句生成的10个存储桶中的每一个,对每个存储桶执行GROUP BY操作,并在该存储桶中查找xMIN最小值和MAX最小值。
如何适当地替换上述查询中的参数
查询中没有(绑定)参数。
如果要更改存储桶的数量,请将10更改为其他数字。

相关问题