hive 中如何使用hql 整除一个数并且余数均分到前面的元素去
例如:
100/3 =
34 33 33
例如:
100/3 =
34 33 33
你这个题目是想表达一个均匀分组的场景吗(当记录数不能整除时也可以均匀分组,假设余数为x,前x个分组每个多分配1个)?
如果是要对数据进行均匀分组,可以使用hive自带的ntile函数,使用示例如下
select x,ntile(3) over() as group_id from
(
select explode(array(1,2,3,4,5,6,7,8,9,10)) as x
) t;
上面查询sql结果为
+-----+-----------+--+
| x | group_id |
+-----+-----------+--+
| 10 | 1 |
| 9 | 1 |
| 8 | 1 |
| 7 | 1 |
| 6 | 2 |
| 5 | 2 |
| 4 | 2 |
| 3 | 3 |
| 2 | 3 |
| 1 | 3 |
+-----+-----------+--+