我有两张桌子。
表AAA
userid exp
1 100
2 235325
3 3242
4 32543
表BBB
level levelup_exp
1 10
2 100
3 1000
4 10000
5 100000
6 1000000
如果我想弄清楚用户的级别,我应该循环表BBB(按级别DESC排序),比较AAA.exp和BBB.levelup_exp,如果exp是>比levelup_exp但< =下一个levelup_exp,找到用户的级别。 所以输出应该是这样的:
userid level
1 2
2 6
3 3
4 4
如何通过使用HiveQL实现这一目标? 提前谢谢。
答案 0 :(得分:0)
这是一个解决方案,您可以尝试使用userid,next_level作为输出,但输出不一致
select userid , level, tab1.exp , levelup_exp ,next ,next_level
from tab1 as tab1 , (
select level, levelup_exp
,lead(levelup_exp, 1) over (order by level) as next
,lead(level, 1) over (order by level) as next_level
from tab2) as tab2x
where tab1.exp > levelup_exp
and tab1.exp <= next
order by userid