HIVE 窗口函数之 ntile()

先看一个案例:

下面是一张订单表

HIVE 窗口函数之 ntile()

要求:查询前 20%时间的订单信息

SQL语句:

select * from ( select name,orderdate,cost, ntile(5) over(order by orderdate) sorted from business ) t where sorted = 1;

 结果:

HIVE 窗口函数之 ntile()

 探索:

试图查找ntile( )函数的解释:

HIVE 窗口函数之 ntile()

将ntile( ) 中的数字改为3,即ntile(3),结果如下图:

HIVE 窗口函数之 ntile()

数据分为3组。

 将sorted 改为2,结果如下图:

HIVE 窗口函数之 ntile()

 指定查询第2组。

分析:

1.ntile( ) 函数与窗口函数over()搭配,用于分组

2.ntile(n)中的n是分为n组的意思,从以上结果我们可以看到,如果总数不够平均分,

总是能保证前面的分组数量相同,最后一组的数量较少。例如14个数据分为5组,前4组平均

有3个数据,第5组只分到2个数据。

上一篇:MySQL explain结果Extra中"Using Index"与"Using where; Using index"区别探究


下一篇:SQL累加常见的三种方法