ntile()如何处理不平衡的数据?

l7wslrjt  于 2021-07-26  发布在  Java
关注(0)|答案(1)|浏览(360)

长话短说,我将一些数据分组到不同的数据段中,并注意到在一列中使用 NTILE(10) OVER(ORDER BY column_name DESC) .
此列中大约50%的值为0,这意味着前5个十分位数的值都相同。
你觉得 NTILE() 你能处理这样的案子吗?
我天真地假设它按值排序,然后将它分成10个偶数块,这意味着它或多或少随机地将0分配到一个十分位,但我还没有找到解释这种特殊情况的文档。
额外的问题——如果值为 NULL 而不是 0 ?

os8fio9y

os8fio9y1#

NTILE() 定义为使瓷砖尺寸尽可能相等。大小可以相差一行,但不能超过一行。
结果,具有相同 order by 钥匙可以在不同的瓷砖中。
本文档试图对此进行描述:
将每个窗口分区的行划分为n个bucket,范围从1到最多n。bucket值最多相差1。
第二句话就是桶的大小最多相差1。

相关问题